论坛中有用户提出如何通过鼠标移动选择区域,但不希望选择区域图片伴随移动。考虑到会有其他用户也会用到这个场景,所以在此共享给大家。
步骤如下:
使用 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;
}
效果图:
Demo 下载:VS2013 + LeadTools V19 + .NET 4.0