예제 #1
0
        private void control_MouseDown(object sender, MouseEventArgs e)
        {
            DragControlProperty controlProperty = this.GetControlProperty(sender as Control);

            controlProperty.PositionMovePoint   = e.Location;
            controlProperty.SizeChangeMovePoint = e.Location;
        }
예제 #2
0
        private void control_MouseMove(object sender, MouseEventArgs e)
        {
            Control             control         = sender as Control;
            DragControlProperty controlProperty = this.GetControlProperty(control);

            if (e.Button != MouseButtons.Left)
            {
                this.m_MousePointPosition = this.MousePointPosition(control.Size, e);
                switch (this.m_MousePointPosition)
                {
                case EnumMousePointPosition.MouseSizeNone:
                    Cursor.Current = Cursors.Arrow;
                    break;

                case EnumMousePointPosition.MouseSizeRight:
                    Cursor.Current = Cursors.SizeWE;
                    break;

                case EnumMousePointPosition.MouseSizeLeft:
                    Cursor.Current = Cursors.SizeWE;
                    break;

                case EnumMousePointPosition.MouseSizeBottom:
                    Cursor.Current = Cursors.SizeNS;
                    break;

                case EnumMousePointPosition.MouseSizeTop:
                    Cursor.Current = Cursors.SizeNS;
                    break;

                case EnumMousePointPosition.MouseSizeTopLeft:
                    Cursor.Current = Cursors.SizeNWSE;
                    break;

                case EnumMousePointPosition.MouseSizeTopRight:
                    Cursor.Current = Cursors.SizeNESW;
                    break;

                case EnumMousePointPosition.MouseSizeBottomLeft:
                    Cursor.Current = Cursors.SizeNESW;
                    break;

                case EnumMousePointPosition.MouseSizeBottomRight:
                    Cursor.Current = Cursors.SizeNWSE;
                    break;

                case EnumMousePointPosition.MouseDrag:
                    Cursor.Current = Cursors.SizeAll;
                    break;
                }
            }
            else
            {
                switch (this.m_MousePointPosition)
                {
                case EnumMousePointPosition.MouseSizeRight:
                    control.Width = (control.Width + e.X) - controlProperty.SizeChangeMovePoint.X;
                    controlProperty.SizeChangeMovePoint = e.Location;
                    break;

                case EnumMousePointPosition.MouseSizeLeft:
                    control.Left   = (control.Left + e.X) - controlProperty.PositionMovePoint.X;
                    control.Width -= e.X - controlProperty.PositionMovePoint.X;
                    break;

                case EnumMousePointPosition.MouseSizeBottom:
                    control.Height = (control.Height + e.Y) - controlProperty.SizeChangeMovePoint.Y;
                    controlProperty.SizeChangeMovePoint = e.Location;
                    break;

                case EnumMousePointPosition.MouseSizeTop:
                    control.Top    += e.Y - controlProperty.PositionMovePoint.Y;
                    control.Height -= e.Y - controlProperty.PositionMovePoint.Y;
                    break;

                case EnumMousePointPosition.MouseSizeTopLeft:
                    control.Left    = (control.Left + e.X) - controlProperty.PositionMovePoint.X;
                    control.Top    += e.Y - controlProperty.PositionMovePoint.Y;
                    control.Width  -= e.X - controlProperty.PositionMovePoint.X;
                    control.Height -= e.Y - controlProperty.PositionMovePoint.Y;
                    break;

                case EnumMousePointPosition.MouseSizeTopRight:
                    control.Top    += e.Y - controlProperty.PositionMovePoint.Y;
                    control.Width  += e.X - controlProperty.SizeChangeMovePoint.X;
                    control.Height -= e.Y - controlProperty.PositionMovePoint.Y;
                    controlProperty.SizeChangeMovePoint = e.Location;
                    break;

                case EnumMousePointPosition.MouseSizeBottomLeft:
                    control.Left   = (control.Left + e.X) - controlProperty.PositionMovePoint.X;
                    control.Width -= e.X - controlProperty.PositionMovePoint.X;
                    control.Height = (control.Height + e.Y) - controlProperty.SizeChangeMovePoint.Y;
                    controlProperty.SizeChangeMovePoint = e.Location;
                    break;

                case EnumMousePointPosition.MouseSizeBottomRight:
                    control.Width  = (control.Width + e.X) - controlProperty.SizeChangeMovePoint.X;
                    control.Height = (control.Height + e.Y) - controlProperty.SizeChangeMovePoint.Y;
                    controlProperty.SizeChangeMovePoint = e.Location;
                    break;

                case EnumMousePointPosition.MouseDrag:
                    control.Left = (control.Left + e.X) - controlProperty.PositionMovePoint.X;
                    control.Top  = (control.Top + e.Y) - controlProperty.PositionMovePoint.Y;
                    break;
                }
                if (control.Width < 10)
                {
                    control.Width = 10;
                }
                if (control.Height < 10)
                {
                    control.Height = 10;
                }
            }
        }
예제 #3
0
        void control_MouseMove(object sender, MouseEventArgs e)
        {
            Control             lCtrl    = (sender as Control);
            DragControlProperty property = GetControlProperty(lCtrl);

            if (e.Button == MouseButtons.Left)
            {
                switch (m_MousePointPosition)
                {
                case EnumMousePointPosition.MouseDrag:
                    lCtrl.Left = lCtrl.Left + e.X - property.PositionMovePoint.X;
                    lCtrl.Top  = lCtrl.Top + e.Y - property.PositionMovePoint.Y;
                    break;

                case EnumMousePointPosition.MouseSizeBottom:
                    lCtrl.Height = lCtrl.Height + e.Y - property.SizeChangeMovePoint.Y;
                    property.SizeChangeMovePoint = e.Location;     //'记录光标拖动的当前点
                    break;

                case EnumMousePointPosition.MouseSizeBottomRight:
                    lCtrl.Width  = lCtrl.Width + e.X - property.SizeChangeMovePoint.X;
                    lCtrl.Height = lCtrl.Height + e.Y - property.SizeChangeMovePoint.Y;
                    property.SizeChangeMovePoint = e.Location;     //'记录光标拖动的当前点
                    break;

                case EnumMousePointPosition.MouseSizeRight:
                    lCtrl.Width = lCtrl.Width + e.X - property.SizeChangeMovePoint.X;
                    //       lCtrl.Height = lCtrl.Height + e.Y - property.p1.Y;
                    property.SizeChangeMovePoint = e.Location;     //'记录光标拖动的当前点
                    break;

                case EnumMousePointPosition.MouseSizeTop:
                    lCtrl.Top    = lCtrl.Top + (e.Y - property.PositionMovePoint.Y);
                    lCtrl.Height = lCtrl.Height - (e.Y - property.PositionMovePoint.Y);
                    break;

                case EnumMousePointPosition.MouseSizeLeft:
                    lCtrl.Left  = lCtrl.Left + e.X - property.PositionMovePoint.X;
                    lCtrl.Width = lCtrl.Width - (e.X - property.PositionMovePoint.X);
                    break;

                case EnumMousePointPosition.MouseSizeBottomLeft:
                    lCtrl.Left   = lCtrl.Left + e.X - property.PositionMovePoint.X;
                    lCtrl.Width  = lCtrl.Width - (e.X - property.PositionMovePoint.X);
                    lCtrl.Height = lCtrl.Height + e.Y - property.SizeChangeMovePoint.Y;
                    property.SizeChangeMovePoint = e.Location;     //'记录光标拖动的当前点
                    break;

                case EnumMousePointPosition.MouseSizeTopRight:
                    lCtrl.Top    = lCtrl.Top + (e.Y - property.PositionMovePoint.Y);
                    lCtrl.Width  = lCtrl.Width + (e.X - property.SizeChangeMovePoint.X);
                    lCtrl.Height = lCtrl.Height - (e.Y - property.PositionMovePoint.Y);
                    property.SizeChangeMovePoint = e.Location;     //'记录光标拖动的当前点
                    break;

                case EnumMousePointPosition.MouseSizeTopLeft:
                    lCtrl.Left   = lCtrl.Left + e.X - property.PositionMovePoint.X;
                    lCtrl.Top    = lCtrl.Top + (e.Y - property.PositionMovePoint.Y);
                    lCtrl.Width  = lCtrl.Width - (e.X - property.PositionMovePoint.X);
                    lCtrl.Height = lCtrl.Height - (e.Y - property.PositionMovePoint.Y);
                    break;

                default:
                    break;
                }
                if (lCtrl.Width < MinWidth)
                {
                    lCtrl.Width = MinWidth;
                }
                if (lCtrl.Height < MinHeight)
                {
                    lCtrl.Height = MinHeight;
                }
            }
            else
            {
                m_MousePointPosition = MousePointPosition(lCtrl.Size, e); //'判断光标的位置状态
                switch (m_MousePointPosition)                             //'改变光标
                {
                case EnumMousePointPosition.MouseSizeNone:
                    Cursor.Current = Cursors.Arrow;            //'箭头
                    break;

                case EnumMousePointPosition.MouseDrag:
                    Cursor.Current = Cursors.SizeAll;          //'四方向
                    break;

                case EnumMousePointPosition.MouseSizeBottom:
                    Cursor.Current = Cursors.SizeNS;           //'南北
                    break;

                case EnumMousePointPosition.MouseSizeTop:
                    Cursor.Current = Cursors.SizeNS;           //'南北
                    break;

                case EnumMousePointPosition.MouseSizeLeft:
                    Cursor.Current = Cursors.SizeWE;           //'东西
                    break;

                case EnumMousePointPosition.MouseSizeRight:
                    Cursor.Current = Cursors.SizeWE;           //'东西
                    break;

                case EnumMousePointPosition.MouseSizeBottomLeft:
                    Cursor.Current = Cursors.SizeNESW;         //'东北到南西
                    break;

                case EnumMousePointPosition.MouseSizeBottomRight:
                    Cursor.Current = Cursors.SizeNWSE;         //'东南到西北
                    break;

                case EnumMousePointPosition.MouseSizeTopLeft:
                    Cursor.Current = Cursors.SizeNWSE;         //'东南到西北
                    break;

                case EnumMousePointPosition.MouseSizeTopRight:
                    Cursor.Current = Cursors.SizeNESW;         //'东北到南西
                    break;

                default:
                    break;
                }
            }
        }