写在前面,在较高的版本中有提供一个更好的显示控件 HSmartWindowControl 。
• 缩放时,将鼠标的当前位置作为缩放的中心
• 移动时,修改图像的原点即可
使用 Halcon 中 HWindowControl 控件的 ImagePart 来实现图像缩放。
ImagePart 指示的是要在 HWindowControl 的窗体中显示图像的哪个部分。
首先 HWindowControl 控件的尺寸是固定的,当我们在这个固定的尺寸中,相对原来显示的一幅完整的图像,现在只显示图像的一部分,即可达到放大效果。
即想放大时,我们便缩小 ImagePart ;想缩小时,我们便放大 ImagePart 。
例如:一幅 800*600 的图像,
一开始我们将 ImagePart 设置为 (0, 0) -> (800*600) ;
现在我们将其设置为 (0, 0) -> (400, 300) ,
之前用整幅图像去填充 HWindowControl 控件,现在用半幅图像去填充它,显然这部分图像就会被放大。放大的倍数是 2 。
现在可以缩放了,再看看如何实现以鼠标的当前位置作为中心,进行缩放?
要保证鼠标中心位置,即保证鼠标所指的图像相对位置不变即可。
首先,假设图像的宽度为 Width ,图像的高度为 Height ,缩放比例为 Scale 。
那么,显然初始状态时 ImagePart 的宽度为 Width, 高度为 Height ;
缩放后 ImagePart 的宽度为 Width