學習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)...”
    image
  • “選擇工具箱項”窗口點擊“瀏覽”按鈕。
    image
  • 選中指定版本的 HALCON/.NET,再點擊“打開”按鈕。
    image
  • 工具箱中會出現“HSmartWindowControl”“HWindowControl”2個圖標。
    image
  • 強烈建議使用“HSmartWindowControl”控件;“HWindowControl”是舊控件,主要為了向后兼容。

添加 HALCON/.NET 引用

  • 添加“HSmartWindowControl”后,自動添加了 HALCON/.NET 引用
  • 手動添加引用:
    右鍵點擊“解決方案”-“引用”,點擊“添加引用(R)...”。
    image
    點擊“瀏覽”按鈕。
    image
    選中指定版本的 HALCON/.NET,再點擊“打開”按鈕。
    image
    點擊“確定”按鈕。
    image

指定名字空間

編程環境 代碼
C# using HalconDotNet;
VB .Net Imports HalconDotNet
C++/CLI using namespace HalconDotNet;

使用 HALCON/.NET 控件進行可視化編程

Windows Forms 中使用 HSmartWindowControl,在 WPF 中使用 HSmartWindowControlWPF

HSmartWindowControl 對比 HWindowControl 的優點:

  • 可以像其他控件一樣使用(比如,能嵌入到TabControlScrollViewer中,能被其他控件遮擋)。
  • 提供了預制的鼠標交互(可以移動窗口中的內容,並使用鼠標滾輪進行縮放操作)。在窗口雙擊后能復位視圖。
  • 控件能無閃爍地自動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");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM