开启左侧

Halcon可视化智能窗口控件介绍

[复制链接]
Criss 发表于 2022-6-1 17:55:50 | 显示全部楼层 |阅读模式
控件在.net下有两种:
HSmartWindowControl (Windows Forms 窗体应用)
HSmartWindowControlWPF (WPF)

与HWindowControl相比,HSmartWindowControl提供了几个优势:
1.它像任何其他控件一样使用(例如,它可以嵌入在TabControls或ScrollViewers中,或者用其他控件覆盖)。
2.提供预定义的鼠标交互(使用鼠标滚轮移动窗口内容和缩放)。双击窗口可以重置视图。
3.控件会自动重新缩放,不会闪烁。
与HSmartWindowControlWPF不同,HSmartWindowControl需要回调才能使用鼠标滚轮进行缩放:
  1. private void WindowControl_Load(object sender, EventArgs e)
  2. {
  3.   this.MouseWheel += my_MouseWheel;
  4. }
复制代码

此外,相对于HSmartWindowControl的左上角,您需要转换鼠标坐标。
  1. private void my_MouseWheel(object sender, MouseEventArgs e)
  2. {
  3.     Point pt = windowControl.Location;
  4.     MouseEventArgs newe = new MouseEventArgs(e.Button, e.Clicks,
  5.                                                  e.X - pt.X, e.Y - pt.Y, e.Delta);
  6.     windowControl.HSmartWindowControl_MouseWheel(sender, newe);
  7. }
复制代码

使用智能窗口控件,可以触发以下事件并对其做出反应:
  1. Click
  2. GotFocus, LostFocus
  3. MouseEnter, MouseLeave, MouseHover
  4. Resize, SizeChanged
  5. KeyDown, KeyUp, KeyPress
复制代码

并非所有的算子都可以正常使用,不支持以下算子:
  1. draw_nurbs, draw_nurbs_mod, draw_nurbs_interp, draw_nurbs_interp_mod
  2. drag_region1, drag_region2, drag_region3
  3. get_mbutton(_subpix), get_mposition(_subpix)
复制代码

相应的,应该使用drawing object相关的算子(非交互式)。
  1. dev_get_window (WindowHandle)
  2. create_drawing_object_circle (100, 100, 80, DrawID)
  3. attach_drawing_object_to_window (WindowHandle, DrawID)
  4. get_drawing_object_params (DrawID, ['row','column','radius'], GenParamValue)
  5. detach_drawing_object_from_window (WindowHandle, DrawID)
复制代码


异常处理对象为HErrorNotify
大力小丸子 发表于 2022-7-2 13:39:27 | 显示全部楼层
C#确实好用很多啊,不错不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表