halcon与C#混合编程(一)打开一张图片

作者:韩兆新

示例一:打开一张图片

halcon源码:

   dev_close_window ()
   read_image (Image, 'fabrik')
   get_image_size (Image, Width, Height)
   dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
   *使图像在C#控件铺开显示
   dev_set_part (0, 0, Height-1, Width-1)
   dev_display (Image)

注意这里的程序当中,用到了一个dev_set_part()算子,这个算子很重要。如果没有用这个算子,则在最后完成的控件中,图片将显示不完整。 

另外注意,在HDevelop环境中,在默认设置下,图片的显示和更新是自动的。但如果想在控件中实现图片的显示,则必须在每一处需要显示的位置,使用dev_display()算子。

导出halcon代码(文件->导出),如中文注释为乱码时,请改变编码方式

建立C#工程:新建C#窗体程序


更改项目属性:(目标框架改为:.NET Framework 4)

image

添加halcondotnet.DLL文件到引用中,并将halconwindow添加至工具箱;
步骤如下:
引用-添加引用-(找到halcon中的 halcondotnet.DLL进行添加

添加HWindowControl控件:

在工具箱中右击->选项卡(向.NET Framework组件库 添加HWindowControl控件)

image

image

添加HWindowControl控件后的工具箱:

image

设置程序界面:

image

添加引用:

image

从导出的ReadImage.cs中拷贝HDevelopExport类到命名空间 HalconCsExample:

image

增加代码:

image

运行结果:



或者用以下方法将halcon导出的程序添加进来:

第五步:
将导出的程序添加至现有程序的类中(其中就包含using halcondotnet;);
点击项目-添加-现有项-把刚才导出来的类添加进来
第六步:
在Form1.cs中,实例化刚才导进来的类:HDevelopExport HD = new HDevelopExport();
第七步:
在button_click中调用此类的方法:HD.RunHalcon(hWindowControl1.HalconWindow);
C#程序:

namespace Test_cat
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }
  HDevelopExport HD = new HDevelopExport();
  private void button1_Click(object sender, EventArgs e)
    {
      HD.RunHalcon(hWindowControl1.HalconWindow);

    }
  }
}


猜你喜欢

转载自blog.csdn.net/jinfengbyd/article/details/80464913