halcon窗体的移动和缩放_Halcon hWindowControl 鼠标缩放平移区域模板匹配绘制

本文介绍了如何在Halcon中实现在窗体上通过鼠标滚轮缩放、左键平移,并进行模板匹配区域的绘制和保存。作者通过详细步骤分享了解决该技术问题的过程,包括鼠标事件处理、平移缩放矩阵的更新以及模板区域的逆向变换技巧。
摘要由CSDN通过智能技术生成

如题所示标题,想同时表达两个意思:1:缩放平移绘制区域,2:创建模板匹配区域并保存。被一个技术问题卡住折腾了近大半天时间+熬夜2个小时,经过不懈努力,反复验证各参数意义,找到了问题的原因,终于攻克难题。分享给需要的朋友。效果如下:

思路如下:

首先鼠标滚轮缩放,按压鼠标左键平移的鼠标事件组合:MouseDown,MouseUp,MouseMove,MouseWheelEvent,

具体为:void AddEvent()

{

hWindowControl2.HMouseWheel += HWindowControl1_HMouseWheel;

hWindowControl2.HMouseMove += HWindowControl1_HMouseMove;

hWindowControl2.HMouseDown += HWindowControl1_HMouseDown;

hWindowControl2.HMouseUp += HWindowControl1_HMouseUp;

hWindowControl2.MouseLeave += HWindowControl1_MouseLeave;

}

MouseDown记录鼠标点击的起始位置:bool mousePressed = false;

Point startPoint = Point.Empty;

private void HWindowControl1_HMouseDown(object sender, HMouseEventArgs e)

{

mousePressed = true;

startPoint = new Point((int)e.X, (int)e.Y);

this.hWindowControl1.Cursor = Cursors.SizeAll;

}MouseMove 平移:注意关键之处,每次移动后的步进位置,需要重新给startPoint赋值,此处调试一下代码就知道如何写了。

另外一点是每次平移后把最新的平移旋转矩阵 out 参数出来,供下次作为新参数传递进去重新计算;private void HWindowControl1_HMouseMove(object sender, HMouseEventArgs e)

{

if (hMatrix == null || !mousePressed) return;

HTuple hv_Matrix = null;

double x = e.X - startPoint.X;

double y = 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值