参考
Chatper 10, solution_guide_i.pdf, Halcon 17.12
HALCON/.NET 和 .NET Framework版本
| 版 本 | 路 径 | 支持WPF | 支持Client Profiles |
|---|---|---|---|
| .NET Framework 2.0 | %HALCONROOT%\bin\dotnet20 | No | No |
| .NET Framework 3.5 | %HALCONROOT%\bin\dotnet35 | Yes | No |
在程序中使用 HALCON/.NET
将 HALCON/.NET 控件添加到工具箱中
- 在工具箱窗口点击右键,选中“选择项(I)...”。

- 在“选择工具箱项”窗口点击“浏览”按钮。

- 选中指定版本的 HALCON/.NET,再点击“打开”按钮。

- 工具箱中会出现“HSmartWindowControl”和“HWindowControl”2个图标。

- 强烈建议使用“HSmartWindowControl”控件;“HWindowControl”是旧控件,主要为了向后兼容。
添加 HALCON/.NET 引用
- 添加“HSmartWindowControl”后,自动添加了 HALCON/.NET 引用
- 手动添加引用:
右键点击“解决方案”-“引用”,点击“添加引用(R)...”。

点击“浏览”按钮。

选中指定版本的 HALCON/.NET,再点击“打开”按钮。

点击“确定”按钮。

指定名字空间
| 编程环境 | 代码 |
|---|---|
| C# | using HalconDotNet; |
| VB .Net | Imports HalconDotNet |
| C++/CLI | using namespace HalconDotNet; |
使用 HALCON/.NET 控件进行可视化编程
在 Windows Forms 中使用 HSmartWindowControl,在 WPF 中使用 HSmartWindowControlWPF。
HSmartWindowControl 对比 HWindowControl 的优点:
- 可以像其他控件一样使用(比如,能嵌入到TabControl和ScrollViewer中,能被其他控件遮挡)。
- 提供了预制的鼠标交互(可以移动窗口中的内容,并使用鼠标滚轮进行缩放操作)。在窗口双击后能复位视图。
- 控件能无闪烁地自动rescale。
使用 HSmartWindowControl 时,需要添加一些代码:
// 添加鼠标滚轮事件的回调
private void WindowControl_Load(object sender, EventArgs e)
{
this.MouseWheel += my_MouseWheel;
}
// 发送鼠标相对坐标发给 HSmartWindowControl
private void my_MouseWheel(object sender, MouseEventArgs e)
{
Point pt = hSmartWindowControl1.Location;
MouseEventArgs newe = new MouseEventArgs(e.Button, e.Clicks,
e.X - pt.X, e.Y - pt.Y, e.Delta);
WindowControl.HSmartWindowControl_MouseWheel(sender, newe);
}
其他可以使用的事件:
ClickGotFocus, LostFocusMouseEnter, MouseLeave, MouseHoverResize, SizeChangedKeyDown, KeyUp, KeyPress
部分算子不支持 HSmartWindowControl
draw_*get_mbutton(_subpix)get_mposition(_subpix)
HSmartWindowControl 属性说明
- HImagePart:图像在窗口上显示的区域。
- HMoveContent:是否可以用鼠标拖拉显示的内容。
- HZoomContent:是否可以用鼠标滚轮对显示的内容进行缩放。
- HZoomFactor:指定缩放时的步长。
- HKeepAspectRatio:是否固定图像的高宽比。
- HDrawingObjectsModifier:是否使用Alt、Ctrl或Shift来配合鼠标进行交互控制。
- HDoubleClickToFitContent:双击是否可以调整显示内容大小来适配窗口尺寸。
-
- 自动将图像大小和窗口适配的代码:
WindowControl.HalconWindow.SetPart(0, 0, -2, -2);
- 自动将图像大小和窗口适配的代码:
-
- 将图像大小设置得和窗口一样:
WindowControl.SetFullImagePart(null);
- 将图像大小设置得和窗口一样:
-
- 显示图像:
WindowControl.HDisplayCurrentObject = new HImage("fabrik");
- 显示图像:
