參考
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");
- 顯示圖像: