Ejemplo n.º 1
0
        private void mcp_MouseMove(object sender, CaptureMouseMoveEventArgs e)
        {
            RectangleMouseCapturer mcp = (RectangleMouseCapturer)sender;
            int dx = mcp.CurrentPosition.X - mcp.StartPosition.X;
            int dy = mcp.CurrentPosition.Y - mcp.StartPosition.Y;

            System.Drawing.Size size = this.Transform.TransformSize(dx, dy);
            mcp.DescRectangle = mcp.UpdateRectangle(mcp.SourceRectangle, size.Width, size.Height);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 锁定鼠标并进行矩形的拖拉操作
        /// </summary>
        /// <remarks>在文档编辑或其他设计器中,经常会出现需要使用鼠标拖拽对象四周边缘上的8个控制点
        /// 的方式来改变对象的位置和大小,本函数则专门用于支持该操作。
        /// 本函数会锁定用户的所有的鼠标和键盘消息,并根据鼠标的移动来修改
        /// 指定的矩形,直到用户松开鼠标或者回调函数取消本次操作
        /// DragStyle 参数为拖拽点的编号,其有效范围为-1至7,其意义为
        /// -1 正在拖拽矩形本身,此时移动鼠标将整体移动矩形
        /// 0  拖拽矩形左上角的控制点,修改矩形的左上角位置,矩形的右下角位置不变,会导致矩形的位置和大小的改变
        /// 1  拖拽矩形上边缘中间的控制点,修改矩形的上边缘位置,其他3个边缘的位置不变,会导致矩形的顶端位置和高度的改变
        /// 2  拖拽矩形右上角的控制点,修改矩形的右上角位置,其左下角的位置不变,会导致矩形的顶端位置和宽度的改变
        /// 3  拖拽矩形右边缘中间的控制点,修改矩形的右边缘的位置,其他边缘位置不变,会导致矩形的宽度的改变
        /// 4  拖拽矩形右下角的控制点,修改矩形的右下角的位置,左上角的位置不变,会导致矩形的大小的改变
        /// 5  拖拽矩形下边缘中间的控制点,修改矩形的下边缘位置,其他边缘不变,会导致矩形的高度的改变
        /// 6  拖拽矩形左下角的控制点,修改矩形的左下角位置,其右上角位置不变,会导致矩形的左端位置和高度的改变
        /// 7  拖拽矩形左边缘中间的控制点,修改矩形左边缘的位置,其他边缘不变,会导致矩形的左端位置和宽度的改变
        /// 关于8个拖拽控制点请参见<link>ZYCommon.DocumentView.GetDragRects</link></remarks>
        /// <param name="SourceRect">原始矩形,坐标为视图区域中的坐标</param>
        /// <param name="DragStyle">拖拽控制点的编号</param>
        /// <param name="DrawFocusRect">拖拉时是否绘制可逆转矩形,若设为true 则会拖拽时会自动绘制当前矩形的可逆矩形边框</param>
        /// <param name="WidthHeightRate">拖动时边框的宽度和高度的比例,若小于等于0.1则不作该设置</param>
        /// <param name="ShowSizeInfo" >拖动时是否显示大小信息</param>
        /// <param name="CallBack">回调函数的委托</param>
        /// <returns>原始矩形进行拖拉操作后修改后的矩形,若用户未改变原始矩形的大小或取消操作则返回空矩形,坐标为视图区域中的坐标</returns>
        /// <seealso>ZYCommon.CaptureDragRectangleHandler</seealso>
        public System.Drawing.Rectangle CaptureDragRect(System.Drawing.Rectangle SourceRect, int DragStyle, bool DrawFocusRect, double WidthHeightRate, bool ShowSizeInfo, CaptureDragRectangleHandler CallBack)
        {
            RectangleMouseCapturer mcp = new RectangleMouseCapturer(this);

            mcp.SourceRectangle = SourceRect;
            mcp.CustomAction    = true;
            mcp.DragStyle       = DragStyle;
            mcp.Draw           += new CaptureMouseMoveEventHandler(mcp_Draw);
            mcp.MouseMove      += new CaptureMouseMoveEventHandler(mcp_MouseMove);
            if (mcp.CaptureMouseMove())
            {
                bolCaptureMouse = false;
                return(mcp.DescRectangle);
            }
            bolCaptureMouse = false;
            return(System.Drawing.Rectangle.Empty);
        }