/// <summary> /// Check point position to see if it's on tracker /// </summary> /// <param name="point">Current Point Position</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> private bool Hit_Test(Point point) { //Check if the point is somewhere on the tracker if (!ControlRect.Contains(point)) { //should never happen Cursor.Current = Cursors.Arrow; return(false); } else if (SmallRect[0].Contains(point)) { Cursor.Current = Cursors.SizeNWSE; CurrBorder = ResizeBorder.TopLeft; } else if (SmallRect[3].Contains(point)) { Cursor.Current = Cursors.SizeNWSE; CurrBorder = ResizeBorder.BottomRight; } else if (SmallRect[1].Contains(point)) { Cursor.Current = Cursors.SizeNESW; CurrBorder = ResizeBorder.TopRight; } else if (SmallRect[2].Contains(point)) { Cursor.Current = Cursors.SizeNESW; CurrBorder = ResizeBorder.BottomLeft; } else if (SmallRect[4].Contains(point)) { Cursor.Current = Cursors.SizeNS; CurrBorder = ResizeBorder.Top; } else if (SmallRect[5].Contains(point)) { Cursor.Current = Cursors.SizeNS; CurrBorder = ResizeBorder.Bottom; } else if (SmallRect[6].Contains(point)) { Cursor.Current = Cursors.SizeWE; CurrBorder = ResizeBorder.Left; } else if (SmallRect[7].Contains(point)) { Cursor.Current = Cursors.SizeWE; CurrBorder = ResizeBorder.Right; } else if (ControlRect.Contains(point)) { Cursor.Current = Cursors.SizeAll; CurrBorder = ResizeBorder.None; } return(true); }
private void OnBottomBorderDragDelta(object sender, DragDeltaEventArgs e) { if (Height >= MinHeight && (Height + e.VerticalChange) > 1) { Height += e.VerticalChange; } else { Height = MinHeight + 1; ResizeBorder?.ReleaseMouseCapture(); } }
private void OnRightBorderDragDelta(object sender, DragDeltaEventArgs e) { if (Width >= MinWidth && (Width + e.HorizontalChange) > 1) { Width += e.HorizontalChange; } else { Width = MinWidth + 1; ResizeBorder?.ReleaseMouseCapture(); } }
private void OnTopBorderDragDelta(object sender, DragDeltaEventArgs e) { if (Height >= MinHeight) { Height -= e.VerticalChange; Top += e.VerticalChange; } else { Height = MinHeight + 1; ResizeBorder?.ReleaseMouseCapture(); } }
private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (IsMouseDown) { switch (mouseModeEnum) { case MouseMode.DRAWING: currentPoint = e.Location; break; case MouseMode.PANNING: panel1.AutoScrollPosition = new Point(-panel1.AutoScrollPosition.X - e.X + startPoint.X, -panel1.AutoScrollPosition.Y - e.Y + startPoint.Y); break; case MouseMode.OBJ_SELECT: switch (resizeBorderEnum) { case ResizeBorder.RB_OBJ_MOVE: rectList[selectedRectCounter].rectangle.X += e.X - startPoint.X; rectList[selectedRectCounter].rectangle.Y += e.Y - startPoint.Y; startPoint = new Point(e.X, e.Y); // Required break; case ResizeBorder.RB_TOP_LEFT: rectList[selectedRectCounter].rectangle.Height = rectList[selectedRectCounter].rectangle.Y + rectList[selectedRectCounter].rectangle.Height - e.Y; rectList[selectedRectCounter].rectangle.Y = e.Y; rectList[selectedRectCounter].rectangle.Width = rectList[selectedRectCounter].rectangle.X + rectList[selectedRectCounter].rectangle.Width - e.X; rectList[selectedRectCounter].rectangle.X = e.X; if (rectList[selectedRectCounter].rectangle.Width < 0) { resizeBorderEnum = ResizeBorder.RB_TOP_RIGHT; } if (rectList[selectedRectCounter].rectangle.Height < 0) { resizeBorderEnum = ResizeBorder.RB_BOTTOM_LEFT; } break; case ResizeBorder.RB_TOP_CENTER: rectList[selectedRectCounter].rectangle.Height = rectList[selectedRectCounter].rectangle.Y + rectList[selectedRectCounter].rectangle.Height - e.Y; rectList[selectedRectCounter].rectangle.Y = e.Y; if (rectList[selectedRectCounter].rectangle.Height < 0) { resizeBorderEnum = ResizeBorder.RB_BOTTOM_CENTER; } break; case ResizeBorder.RB_TOP_RIGHT: rectList[selectedRectCounter].rectangle.Height = rectList[selectedRectCounter].rectangle.Y + rectList[selectedRectCounter].rectangle.Height - e.Y; rectList[selectedRectCounter].rectangle.Y = e.Y; rectList[selectedRectCounter].rectangle.Width = e.X - rectList[selectedRectCounter].rectangle.X; if (rectList[selectedRectCounter].rectangle.Width < 0) { resizeBorderEnum = ResizeBorder.RB_TOP_LEFT; } if (rectList[selectedRectCounter].rectangle.Height < 0) { resizeBorderEnum = ResizeBorder.RB_BOTTOM_RIGHT; } break; case ResizeBorder.RB_CENTER_LEFT: rectList[selectedRectCounter].rectangle.Width = rectList[selectedRectCounter].rectangle.X + rectList[selectedRectCounter].rectangle.Width - e.X; rectList[selectedRectCounter].rectangle.X = e.X; if (rectList[selectedRectCounter].rectangle.Width < 0) { resizeBorderEnum = ResizeBorder.RB_CENTER_RIGHT; } break; case ResizeBorder.RB_CENTER_RIGHT: rectList[selectedRectCounter].rectangle.Width = e.X - rectList[selectedRectCounter].rectangle.X; if (rectList[selectedRectCounter].rectangle.Width < 0) { resizeBorderEnum = ResizeBorder.RB_CENTER_LEFT; } break; case ResizeBorder.RB_BOTTOM_LEFT: rectList[selectedRectCounter].rectangle.Width = rectList[selectedRectCounter].rectangle.X + rectList[selectedRectCounter].rectangle.Width - e.X; rectList[selectedRectCounter].rectangle.X = e.X; rectList[selectedRectCounter].rectangle.Height = e.Y - rectList[selectedRectCounter].rectangle.Y; if (rectList[selectedRectCounter].rectangle.Width < 0) { resizeBorderEnum = ResizeBorder.RB_BOTTOM_RIGHT; } if (rectList[selectedRectCounter].rectangle.Height < 0) { resizeBorderEnum = ResizeBorder.RB_TOP_LEFT; } break; case ResizeBorder.RB_BOTTOM_CENTER: rectList[selectedRectCounter].rectangle.Height = e.Y - rectList[selectedRectCounter].rectangle.Y; if (rectList[selectedRectCounter].rectangle.Height < 0) { resizeBorderEnum = ResizeBorder.RB_TOP_CENTER; } break; case ResizeBorder.RB_BOTTOM_RIGHT: rectList[selectedRectCounter].rectangle.Height = e.Y - rectList[selectedRectCounter].rectangle.Y; rectList[selectedRectCounter].rectangle.Width = e.X - rectList[selectedRectCounter].rectangle.X; if (rectList[selectedRectCounter].rectangle.Width < 0) { resizeBorderEnum = ResizeBorder.RB_BOTTOM_LEFT; } if (rectList[selectedRectCounter].rectangle.Height < 0) { resizeBorderEnum = ResizeBorder.RB_TOP_RIGHT; } break; } rectList[selectedRectCounter].SetNewLocationOfSubRectList(); break; } pictureBox1.Invalidate(); } } else // Mouse is not down but only moving { if (mouseModeEnum == MouseMode.OBJ_SELECT) { startPoint = new Point(e.X, e.Y); foreach (RectangleList rect in rectList) { if (rect.subRectList[0].Contains(startPoint)) { Cursor = Cursors.SizeNWSE; // Top-Left resizeBorderEnum = ResizeBorder.RB_TOP_LEFT; break; } else if (rect.subRectList[1].Contains(startPoint)) { Cursor = Cursors.SizeNS; // Top-Center resizeBorderEnum = ResizeBorder.RB_TOP_CENTER; break; } else if (rect.subRectList[2].Contains(startPoint)) { Cursor = Cursors.SizeNESW; // Top-Right resizeBorderEnum = ResizeBorder.RB_TOP_RIGHT; break; } else if (rect.subRectList[3].Contains(startPoint)) { Cursor = Cursors.SizeWE; // Center-Left resizeBorderEnum = ResizeBorder.RB_CENTER_LEFT; break; } else if (rect.subRectList[4].Contains(startPoint)) { Cursor = Cursors.SizeWE; // Center-Right resizeBorderEnum = ResizeBorder.RB_CENTER_RIGHT; break; } else if (rect.subRectList[5].Contains(startPoint)) { Cursor = Cursors.SizeNESW; // Botton-Left resizeBorderEnum = ResizeBorder.RB_BOTTOM_LEFT; break; } else if (rect.subRectList[6].Contains(startPoint)) { Cursor = Cursors.SizeNS; // Bottom-Center resizeBorderEnum = ResizeBorder.RB_BOTTOM_CENTER; break; } else if (rect.subRectList[7].Contains(startPoint)) { Cursor = Cursors.SizeNWSE; // Bottom-Right resizeBorderEnum = ResizeBorder.RB_BOTTOM_RIGHT; break; } else if (rect.rectangle.Contains(startPoint)) { Cursor = Cursors.SizeAll; resizeBorderEnum = ResizeBorder.RB_OBJ_MOVE; break; } else { Cursor = Cursors.Default; resizeBorderEnum = ResizeBorder.RB_NONE; } } } } }
get => new Thickness(ResizeBorder + OuterMarginSize, OuterMarginSize, ResizeBorder + OuterMarginSize,
/// <summary> /// Check point position to see if it's on tracker /// </summary> /// <param name="point">Current Point Position</param> /// <returns></returns> public bool IsPointInTracker(Point point) { //Check if the point is somewhere on the tracker if (!ControlRect.Contains(point)) { //should never happen Cursor.Current = Cursors.Arrow; return false; } else if(SmallRect[0].Contains(point)) { Cursor.Current = Cursors.SizeNWSE; CurrBorder = ResizeBorder.TopLeft; } else if(SmallRect[3].Contains(point)) { Cursor.Current = Cursors.SizeNWSE; CurrBorder = ResizeBorder.BottomRight; } else if(SmallRect[1].Contains(point)) { Cursor.Current = Cursors.SizeNESW; CurrBorder = ResizeBorder.TopRight; } else if(SmallRect[2].Contains(point)) { Cursor.Current = Cursors.SizeNESW; CurrBorder = ResizeBorder.BottomLeft; } else if(SmallRect[4].Contains(point)) { Cursor.Current = Cursors.SizeNS; CurrBorder = ResizeBorder.Top; } else if(SmallRect[5].Contains(point)) { Cursor.Current = Cursors.SizeNS; CurrBorder = ResizeBorder.Bottom; } else if(SmallRect[6].Contains(point)) { Cursor.Current = Cursors.SizeWE; CurrBorder = ResizeBorder.Left; } else if(SmallRect[7].Contains(point)) { Cursor.Current = Cursors.SizeWE; CurrBorder = ResizeBorder.Right; } else if(ControlRect.Contains(point)) { Cursor.Current = Cursors.Default; CurrBorder = ResizeBorder.None; } return true; }