您的位置:首页 > 编程语言 > C#

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

2017-09-01 17:07 218 查看
感受:趟了几个雷,摸到几块石头,知其然不知其所以然,聊以记录,为后人享。欲知其所以然,还是得从头去

软件配置: 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,选别的也会错误框弹弹弹!!!



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# halcon