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

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

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

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

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

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);

这里写图片描述
如上图所示,代码段利用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分别为窗口的长和宽。
这里写图片描述
这样的方法相当于按比例缩放了图片,但对于交互需要注意,因为这种处理方式使得图像被放缩了,所以在图片上的所有尺寸操作最后都需要通过除以hv_rate,还原到原图上的尺寸和位置信息。

  • 10
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值