C# halcon窗口实现图像放大缩小移动功能
1、使用halcon的控件HWindowControl,并为控件添加四个鼠标事件,HMouseDown、HMouseMove、HMouseUp、HMouseWheel。
对事件进行封装,方便后续多次调用。
1.1 创建一个CS文件,命名为 ImageOperation ,并定义两个HTuple变量,变量名为RowDown,ColDown。
/// <summary>
/// 鼠标嗯下时的横纵坐标
/// </summary>
HTuple RowDown, ColDown;
1.2 实现MouseWheel事件的封装:
/// <summary>
/// 图像放大缩小
/// </summary>
/// <param name="sender">窗口句柄</param>
/// <param name="e">操作类型</param>
/// <param name="image">图像</param>
public void MouseWheel(object sender, HMouseEventArgs e, HObject image)
{
if (image.CountObj() > 0 || image != null)//必须有图的情况下使用
{
try
{
//窗口
HWindowControl hWindowControl = sender as HWindowControl;
HObject CurrImage = null;
HOperatorSet.GenEmptyObj(out CurrImage);
CurrImage = image.Clone();
//放大倍数,当前鼠标选择的图像点坐标Row, Col,按下鼠标的左键还是右键:0-没按下,1-左键,2-中键,4-右键
HTuple Zoom, Row, Col, Button;
HTuple RowLeftUpper, ColumnLeftUpper, RowRightLower, ColumnRightLower, Ht, Wt, ImagePartRowLeftUp, ImagePartColLeftUp, ImagePartRowRightLow, ImagePartColRightLow;
//鼠标向上滚动表示放大
if (e.Delta > 0)
{
Zoom = 1.5;
}
//向下滚动缩小
else
{
Zoom = 0.5;
}
//返回输出窗口中鼠标指针和鼠标按钮所按下的像素精确图像坐标,输出当前鼠标指针点的图像坐标以及按下的是鼠标左键还是右键,0是鼠标左键
HOperatorSet.GetMposition(hWindowControl.HalconWindow, out Row, out Col, out Button);
//Get part返回窗口中显示的图像部分的左上角和右下角
//得到当前的窗口坐标,Row0:图像部分左上角的行索引,Column0:图像部分左上角的列索引,Row00:图像部分右下角的行索引,Column00:图像部分右下角的列索引
HOperatorSet.GetPart(hWindowControl.HalconWindow, out RowLeftUpper, out ColumnLeftUpper, out RowRightLower, out ColumnRightLower);
//显示的部分图像的高
Ht = RowRightLower - RowLeftUpper;
//显示的部分图像的宽
Wt = ColumnRightLower - ColumnLeftUpper;
//普通版halcon能处理的图像最大尺寸是32K*32K。如果无限缩小原图像,导致显示的图像超出限制,则会造成程序崩溃
if (Ht * Wt < 32000 * 32000 || Zoom == 1.5)
{
//显示的放大或者缩小部分图像的左上角和右下角坐标
ImagePartRowLeftUp = (RowLeftUpper + ((1 - (1.0 / Zoom)) * (Row - RowLeftUpper)));
ImagePartColLeftUp = (ColumnLeftUpper + ((1 - (1.0 / Zoom)) * (Col - ColumnLeftUpper)));
ImagePartRowRightLow = ImagePartRowLeftUp + (Ht / Zoom);
ImagePartColRightLow = ImagePartColLeftUp + (Wt / Zoom);
//设置部分显示图像
HOperatorSet.SetPart

本文详细介绍了如何在C#环境下利用Halcon库,通过HWindowControl控件实现图像的放大、缩小和移动功能。通过封装HMouseDown、HMouseMove、HMouseUp、HMouseWheel四个鼠标事件,实现了图像的平移、缩放功能,同时提供了鼠标滚轮控制图像缩放的实现方法。此外,还展示了如何使用HSmartWindowControl控件简化移动功能的实现。
最低0.47元/天 解锁文章
765

被折叠的 条评论
为什么被折叠?



