C#/Halcon混合编程 HWindowControl按比例显示图片的方法

HWindowControl控件按比例显示图片的方法

HWindowControl是C#/Halcon混合编程中非常实用的一种控件,尤其是需要在界面上与用户产生交互时,使用pictureBox控件远不如使用HWindowControl控件方便。

C#/Halcon混合编程中遇到的常见问题之一

在使用C#和Halcon做混合编程的过程中,经常会遇到这样一个问题,即如何在HWindowControl控件中,按原图比例来显示图片。
对使用该控件有经验的筒子们知道,如果我们使用setpart算子,则可以将图像截取显示到控件上,但HWindowControl会将图片自动铺满。
C#/Halcon混合编程 HWindowControl按比例显示图片的方法_第1张图片

HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
HOperatorSet.SetPart(hv_ExpDefaultWinHandle, 0, 0, hv_Height - 1, hv_Width - 1);
HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);

C#/Halcon混合编程 HWindowControl按比例显示图片的方法_第2张图片
如上图所示,代码段利用setpart,将整幅图片显示在控件内,但是很显然,图片被拉伸了,圆的比例全部错误。

HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
HOperatorSet.TupleMin2(1.0 * HWSize_x / hv_Width, 1.0 * HWSize_y / hv_Height, out hv_rate);
HOperatorSet.ZoomImageFactor(ho_Image, out ho_Imageresize, hv_rate, hv_rate, "constant");

HOperatorSet.SetPart(hv_ExpDefaultWinHandle, 0, 0, HWSize_y - 1, HWSize_x - 1);
HOperatorSet.DispObj(ho_Imageresize, hv_ExpDefaultWinHandle);

其中HWSize_x, HWSize_y分别为窗口的长和宽。
C#/Halcon混合编程 HWindowControl按比例显示图片的方法_第3张图片
这样的方法相当于按比例缩放了图片,但对于交互需要注意,因为这种处理方式使得图像被放缩了,所以在图片上的所有尺寸操作最后都需要通过除以hv_rate,还原到原图上的尺寸和位置信息。

你可能感兴趣的:(HALCON)