Halcon 与 c# 混合编程读取并显示一张图片

感受:趟了几个雷,摸到几块石头,知其然不知其所以然,聊以记录,为后人享。欲知其所以然,还是得从头去
软件配置: Halcon 12 + Visual Studio 2013

以下实现Halcon读取并完整显示桌面上的一幅图片

1.实现Halcon读取图片并显示的功能

首先当然是先把Halcon的代码写好:

dev_close_window ()
read_image (Image, 'C:/Users/Administrator/Desktop/timg.jpg')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_part (0, 0, Height-1, Width-1)
dev_display (Image)

注意这里的程序当中,用到了一个dev_set_part()算子,这个算子很重要。如果没有用这个算子,则在最后完成的控件中,图片将显示不完整。
另外注意,在HDevelop环境中,在默认设置下,图片的显示和更新是自动的。但如果想在控件中实现图片的显示,则必须在每一处需要显示的位置,使用dev_display()算子。

然后将Halcon代码导出成c#代码:
这里写图片描述

2.建立c#工程

在VS中新建一个c#工程,记住框架要选 .NET Framework 4,不要手贱看到还有高版本的4.5就跑去选4.5

在“设计”中完成以下设计:
这里写图片描述
如何添加按钮,在这里就不多说了。
上面的那个控件是HWindowsControl
这里写图片描述

3.工具箱中添加Halcon窗口工具(首次使用需要)

如果是首次使用Halcon和c#混合编程,则需要向VS的工具箱中添加Halcon窗口工具HWindowControl。添加的方法是在“视图”->“工具箱”-> “所有Windows窗体”中右击,选择“选择项”
这里写图片描述
在弹出窗口中选择“浏览”
这里写图片描述
在MVTech安装目录下查找:halcon12.0\bin\dotnet20或dotnet35文件夹,我这里是选的dotnet35文件夹,应该是和VS的版本相匹配。
找到文件夹下halcondotnet.dll添加即可。
这里写图片描述

4.程序改写

接下来就是非常重要的程序改写阶段啦。
首先在程序头添加

using HalconDotNet;

接下来是一个坑,向namespace中添加导出的Halcon c#代码时一定得注意:必须把导出的代码放在控件的代码段后面。否则就会弹个错!!!
喏就是它了,public partial class HDevelopExport:
这里写图片描述

最后一步就是改写按钮控件的事件响应:

        private void button1_Click(object sender, EventArgs e)
        {
            HDevelopExport HD = new HDevelopExport();
            HD.RunHalcon(hWindowControl1.HalconWindow);
        }

对我很懒,就叫button1.
最后要注意,项目编译的时候,属性选Any CPU,选别的也会错误框弹弹弹!!!
这里写图片描述

这里写图片描述

你可能感兴趣的:(HALCON)