/// <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();
     }
 }
Example #5
0
        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;
                        }
                    }
                }
            }
        }
Example #6
0
 get => new Thickness(ResizeBorder + OuterMarginSize,
                      OuterMarginSize,
                      ResizeBorder + OuterMarginSize,
Example #7
0
        /// <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;
        }