halcon控件HSmartWindowControl使用(显示图片、鼠标放大缩小)

        平常使用C#和halcon进行联合开发,一定会有要显示图片的地方,halcon显示图片的控件有两个HWindowControl和HSmartWindowControl。HWindowControl控件一直都有,而HSmartWindowControl是在halcon18之后才有的,个人觉得HSmartWindowControl会更加方便,更加好用。接下来介绍一些使用方法:

1、显示图片

1.1、图片充满控件显示 

        这种显示方式是比较常见的显示,但是有一个缺点就是图片会被拉伸至和HSmartWindowControl控件一样大小,有些时候会导致图片变形。

public void DispImage(HObject image, HWindow hWindow)
{
    // 获取图像尺寸
    HOperatorSet.GetImageSize(image, out HTuple width, out HTuple height);
    // 设置 Halcon 图像显示尺寸,图像会铺满 Halcon 控件
    HOperatorSet.SetPart(hWindow, 0, 0, height - 1, width - 1);
    // 显示图像
    HOperatorSet.DispObj(image, hWindow);
    
}

 

 1.2、图片保持宽高比显示

        这种显示方式可以使图片在 HSmartWindowControl控件里保持正常的宽高比,图片不会被拉伸变形,就跟双击控件后实现的效果一样。

public void DispFullImage(HObject image, HSmartWindowControl hSmartWindowControl)
{
    // 获取图像尺寸
    HOperatorSet.GetImageSize(image, out HTuple width, out HTuple height);
    // 设置 Halcon 图像显示尺寸,一般来说,图像会铺满 Halcon 控件,因此会有一定程度拉伸
    HOperatorSet.SetPart(hSmartWindowControl.HalconWindow, 0, 0, height - 1, width - 1);
    // 显示图像
    HOperatorSet.DispObj(image, hSmartWindowControl.HalconWindow);
    // 设置原图像比例缩放,这个效果和双击左键效果一样
    hSmartWindowControl.SetFullImagePart();
}

 

2、鼠标实现放大缩小

        显示图片之后再很多情况下我们都需要放大缩小图片查看细节, HSmartWindowControl自带有函数可以实现,只要和鼠标滚轮进行绑定即可。

private void hSmartWindowControl1_MouseWheel(object sender, MouseEventArgs e)
{
    try
    {
        MouseEventArgs newe = new MouseEventArgs(e.Button, e.Clicks, e.X - Location.X, e.Y - Location.Y, e.Delta);
        if (hSmartWindowControl1.RectangleToScreen(hSmartWindowControl1.ClientRectangle).Contains(MousePosition))
        {

            hSmartWindowControl1.HSmartWindowControl_MouseWheel(sender, newe);
        }
    }
    catch (Exception ex)
    {

    }
}

        在初始化的时候进行绑定

private void Form1_Load(object sender, EventArgs e)
{
    MouseWheel += hSmartWindowControl1_MouseWheel;
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值