LeadTools 移动选择区域

发布时间:2015/08/03 00:08 发布者:iceman

返回博客中心

论坛中有用户提出如何通过鼠标移动选择区域,但不希望选择区域图片伴随移动。考虑到会有其他用户也会用到这个场景,所以在此共享给大家。

步骤如下:

使用 AddRectangleToRegion 设置选择区域:

            codecs = new RasterCodecs();
            rasterImageViewer1.Image = codecs.Load(@"..\..\test.png");
            rasterImageViewer1.InteractiveRegionRectangle += rasterImageViewer1_InteractiveRegionRectangle;
            rasterImageViewer1.InteractiveRegionType = RasterViewerInteractiveRegionType.Rectangle;
            rasterImageViewer1.Image.AddRectangleToRegion(null, new LeadRect(214, 176, 147, 172), RasterRegionCombineMode.Set);

 

该功能需要结合鼠标按下、移动及释放事件进行选择区域的移动:

            rasterImageViewer1.MouseDown += rasterImageViewer1_MouseDown;
            rasterImageViewer1.MouseMove += rasterImageViewer1_MouseMove;
            rasterImageViewer1.MouseUp += rasterImageViewer1_MouseUp;

 

使用 MouseDown 事件开启移动标记位:

        bool flag = false;
        void rasterImageViewer1_MouseDown(object sender, MouseEventArgs e)
        {
            flag = true;
        }

 

在 MouseMove 事件中通过重绘选择区域实现移动:

        void rasterImageViewer1_MouseMove(object sender, MouseEventArgs e)
        {
            if (flag)
            {
                
                LeadRect lr = rasterImageViewer1.Image.GetRegion(null).GetBounds();
                rasterImageViewer1.Image.AddRectangleToRegion(null, new LeadRect(e.X-214, e.Y-176, 147, 172), RasterRegionCombineMode.Set);                
            }
        }

 

在 MouseUp 事件中关闭移动标记:

        void rasterImageViewer1_MouseUp(object sender, MouseEventArgs e)
        {
            flag = false;
        }

 

效果图:

Demo1

Demo 下载:VS2013 + LeadTools V19 + .NET 4.0


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网