private Rectangle GetNodePosition(RectNodePosition position) { switch (position) { case RectNodePosition.BottomCenter: return new Rectangle(_rectangle.X + _rectangle.Width/2-_sizeOfNode/2, _rectangle.Y + _rectangle.Height-_sizeOfNode/2, _sizeOfNode, _sizeOfNode); case RectNodePosition.BottomLeft: return new Rectangle(_rectangle.X - _sizeOfNode/2, _rectangle.Y + _rectangle.Height-_sizeOfNode/2, _sizeOfNode, _sizeOfNode); case RectNodePosition.BottomRight: return new Rectangle(_rectangle.X + _rectangle.Width - _sizeOfNode / 2, _rectangle.Y + _rectangle.Height - _sizeOfNode / 2, _sizeOfNode, _sizeOfNode); case RectNodePosition.MiddleLeft: return new Rectangle(_rectangle.X - _sizeOfNode / 2, _rectangle.Y + _rectangle.Height / 2 - _sizeOfNode / 2, _sizeOfNode, _sizeOfNode); case RectNodePosition.MiddleRight: return new Rectangle(_rectangle.X + _rectangle.Width - _sizeOfNode / 2, _rectangle.Y + _rectangle.Height / 2 - _sizeOfNode / 2, _sizeOfNode, _sizeOfNode); case RectNodePosition.TopCenter: return new Rectangle(_rectangle.X + _rectangle.Width / 2 - _sizeOfNode / 2, _rectangle.Y - _sizeOfNode / 2, _sizeOfNode, _sizeOfNode); case RectNodePosition.TopLeft: return new Rectangle(_rectangle.X - _sizeOfNode / 2, _rectangle.Y - _sizeOfNode / 2, _sizeOfNode, _sizeOfNode); case RectNodePosition.TopRight: return new Rectangle(_rectangle.X + _rectangle.Width - _sizeOfNode / 2, _rectangle.Y - _sizeOfNode / 2, _sizeOfNode, _sizeOfNode); } return new Rectangle(); }
private void PictureBoxOnMouseDown(object sender, MouseEventArgs mouseEventArgs) { if (!IsSelected) return; _holdMouseFlag = true; _selectedNode = GetNodeFromPoint(mouseEventArgs.Location); if (_rectangle.Contains(new Point(mouseEventArgs.X, mouseEventArgs.Y))) { _movingFlag = true; } _oldLocationX = mouseEventArgs.X; _oldLocationY = mouseEventArgs.Y; _oldRectangle = _rectangle; _pictureBox.Refresh(); }
private Cursor GetCursor(RectNodePosition nodePosition) { switch (nodePosition) { case RectNodePosition.BottomCenter: case RectNodePosition.TopCenter: return Cursors.SizeNS; case RectNodePosition.BottomRight: case RectNodePosition.TopLeft: return Cursors.SizeNWSE; case RectNodePosition.BottomLeft: case RectNodePosition.TopRight: return Cursors.SizeNESW; case RectNodePosition.MiddleLeft: case RectNodePosition.MiddleRight: return Cursors.SizeWE; default: return Cursors.Default; } }