使用PictureBox控件显示halcon图像并使图像适应窗口大小

 

网上找到此类方法试过之后发现如果图片很大或很小,要么图像超出PictureBox显示范围或小于显示范围,无论是设置PictureBox控件的自适应属性都无济于事(//pictureBox1.BackgroundImageLayout = ImageLayout.Stretch; //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;)

正确做法如下:

            HOperatorSet.ReadImage(out HObject img, @"C:\Users\斌\Desktop\camera1\20200402095111.bmp");
            HOperatorSet.GetImageSize(img, out HTuple width, out HTuple height);
            //注意:要使图像适应pictureBox窗口显示需要设置窗口大小为该控件的大小(pictureBox1.Width, pictureBox1.Height)
            HOperatorSet.OpenWindow(0, 0, pictureBox1.Width, pictureBox1.Height, pictureBox1.Handle, "visible", "", out WindowHandle);
            HOperatorSet.DispObj(img, WindowHandle);

测试这样的设置是否会扰乱我们的常规使用(例如某些获取像素坐标的方法不准):

        private void Form1_Load(object sender, EventArgs e)
        {
            HOperatorSet.ReadImage(out HObject img, @"C:\Users\斌\Desktop\camera1\20200402095111.bmp");
            HOperatorSet.OpenWindow(0, 0, pictureBox1.Width, pictureBox1.Height, pictureBox1.Handle, "visible", "", out WindowHandle);
            HOperatorSet.DispObj(img, WindowHandle);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //测试以上设置是否会不符合通常的使用
            HOperatorSet.GetMbutton(WindowHandle, out HTuple rowB, out HTuple colB, out HTuple button);
            MessageBox.Show("row = " + rowB + "  col = " + colB);
        }

图中红色圈圈是我鼠标点击的位置,消息窗口弹出的是监听鼠标事件触发位置的像素坐标  (图片的像素是2592*1944)

使用PictureBox控件显示halcon图像并使图像适应窗口大小_第1张图片

使用PictureBox控件显示halcon图像并使图像适应窗口大小_第2张图片

感觉还行。。。

你可能感兴趣的:(halcon)