学习Halcon(一)——使用HALCON/.NET开发程序(一)

学习Halcon(一)——使用HALCON/.NET开发程序(一)

参考

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);

}

其他可以使用的事件:

Click

GotFocus, LostFocus

MouseEnter, MouseLeave, MouseHover

Resize, SizeChanged

KeyDown, 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");

相关推荐

如何在 iPhone 上扫描照片 ▷➡️
beat365唯一的网址

如何在 iPhone 上扫描照片 ▷➡️

07-31 👁️‍🗨️ 6773
中国最早的自来水是怎么来的?为何会被人称为“洋胰子水”?
《奇门遁甲》神盘、天盘、人盘、地盘怎么看?
bat365入口

《奇门遁甲》神盘、天盘、人盘、地盘怎么看?

07-13 👁️‍🗨️ 9831
侵蚀的意思
365scores下载

侵蚀的意思

02-15 👁️‍🗨️ 7961
DOTA2是2017奖金最高电竞项目
365scores下载

DOTA2是2017奖金最高电竞项目

02-17 👁️‍🗨️ 9883
用纸箱造小车,创意无限!
bat365入口

用纸箱造小车,创意无限!

08-10 👁️‍🗨️ 9913
手机硬件检测软件哪个好
365scores下载

手机硬件检测软件哪个好

06-20 👁️‍🗨️ 6266
2015投资哪些致富 投资致富的项目
365scores下载

2015投资哪些致富 投资致富的项目

08-04 👁️‍🗨️ 4661
液晶电视花屏问题的解决方法(探索液晶电视花屏原因与解决方案)