Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)

Posted 挣脱生命的束缚...

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)相关的知识,希望对你有一定的参考价值。

 

 Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)

 

技术分享 分类:
 

目录(?)[+]

 

HWindowControl控件初步使用

  最近在学习新的视觉处理工具–Halcon软件包,本人学习的主要是HDevelop、Halcon与C#混编以及Halcon与C++混编。这里再多缀一句:11版本后C++编程,包含的是halconcpp文件夹,10版本前包含的是cpp文件夹,我主要学习的是11版本以后的C++编程。 
  此篇文章是为了记录学习过程中的一些知识点而已,当然后续的文章也都是如此。好了,废话不多说了,直奔主题吧。在WinForm中使用HWindowControl控件显示图片时,大伙最关心的应该就是图像能否完全显示出来的问题。下面将介绍下我学习过程中的收获,最后会附上程序源码。

HWindowControl控件和控件中的显示区域认识

  HWindowControl是显示控件,但关系到显示图像部分的是此控件的“子窗口”HWindowControl.HalconWindow。下面我将用“控件”和“显示区域”来分别代称上述二位。 
  其实,可以将“控件”和“显示区域”两者分开来看。“控件”是控件,“显示区域”是显示区域,两者相互独立,互不干扰。为什么这样说,因为这样非常有助于理解以下两个概念:“控件”的大小和“显示区域”的大小。另,可以将“显示区域”理解成控件中的黑色区域。 
  下面我将直接用实例说明。

HWindowControl的实例应用

  首先,看下图的红色标记区域: 
  技术分享 
  注意图中的红色标记处,两处都是关于大小的属性。标记1处的属性是ImagePart,这个其实是“显示区域”的大小(默认的好像是640×480,这里我也没去修改它,因为我程序就是来说明这点的),代码里也需要使用“显示区域”去设置,“控件”自身不能设置。标记2处有两个属性,这两个属性的值是一起变化的(相同的),用来表示“控件”的大小。这里我设置的是512×512,因为我程序是来显示经典的lena照片,其大小正是512×512。 
  以上部分是为了给大家一个直观印象,下面就直接进入程序介绍。下图是程序界面。 
  技术分享 
  程序中共两个Button,标记1处的Button(OpenImage)的功能是打开图像并显示图像,标记3处的Button(SetImagePart)的功能是修改“显示区域大小”并显示图像。标记2处是用来设置“显示区域”的Width和Height。对了,初次打开软件时,标记2处显示的是当前HWindowControl中显示区域的Width和Height。此处显示的是640×480,和我刚才控件属性(ImagePart)那边一致。此时,SetImagePart也处于禁用状态,因为还没有图像传进来啦。 
  单击标记1处Button(OpenImage),效果如下图所示。 
  技术分享 
  成功打开图像后,SetImagePart按钮生效。下面我们就来修改显示区域。首先将“显示区域”设置成lena图像的实际大小512×512,然后单击SetImagepart按钮。效果如下图所示: 
  技术分享 
  此时lena图像已经完整的现实出来了。Ok,我们再将“显示区域”设置成256×256,看会是什么结果?设置好值后,单击SetImagePart按钮。效果如下图所示: 
  技术分享 
  此时,“显示区域”只显示了图像的四分之一。是否已经理解了显示区域大小的概念了?….无论理解与否,我们继续设置“显示区域”为1024×1024,然后单击SetImagePart按钮。效果如下图所示: 
  技术分享 
  此时,完整的图像只能占据“显示区域”的四分之一。至此,小程序介绍完毕。

关键代码片段

  第一次打开程序时,获取控件中“显示区域”大小。代码如下:

textBox_Width.Text = hWindowControl1.ImagePart.Width.ToString();
textBox_Height.Text = WindowControl1.ImagePart.Height.ToString();
  • 1
  • 2
  • 1
  • 2

  SetImagePart按钮功能。代码如下:

int dWidth = Convert.ToInt32(textBox_Width.Text.Trim());
int dHeight = Convert.ToInt32(textBox_Height.Text.Trim());
if (dWidth > 0 && dHeight > 0)
{
    hoWindow.ClearWindow();
    hoWindow.SetPart(0, 0, dHeight - 1, dWidth - 1);
    hoImage.DispObj(hoWindow);
}
else
{
    MessageBox.Show("The width of ImagePart is <= 0 or The height of ImagePart is <= 0");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
技术分享
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

  呃….悲剧了….好像不能添加附件,程序源代码找机会再上传到下载那边。 

以上是关于Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)的主要内容,如果未能解决你的问题,请参考以下文章

halcon HwindowCtronl 原始比例显示图片

解决Halcon转C#时,图像显示的问题

HSmartWindowControl 之 摄像头实时显示( 使用 WPF )

halcon求roi宽度

halcon 两点间的像素如何转成mm,如200pix=多少mm?

Halcon图像的自适应显示缩放移动