MFC联合Halcon之窗口图片显示

MFC联合Halcon之窗口图片显示

具体的方案是:使用一个Picture Control 控件,调用Halcon中的OpenWindow函数,将其参数中的父窗口设为Picture Control 的句柄,就可以在控件内显示我们的照片了,同时要注意缩放一下图片以适应控件大小。

MFC程序
还是新建一个对话框程序,然后添加一个按钮和一个PictureControl控件,控件的ID默认为IDC_STATIC。

正如上一篇中一样,首先在对话框类的头文件和cpp文件中包含halcon的头文件和命名空间

#include “halconcpp.h”
using namespace HalconCpp;

然后双击按钮填写按钮的响应函数,这里为了方便把halcon的变量直接定义在了响应函数中:

 void CHalconWindowDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HObject  ho_Image;
HTuple HWindowID;
CRect Rect;
HTuple m_HWindowID;
HTuple m_ImageWidth,m_ImageHeight;

CWnd * pWnd = GetDlgItem( IDC_STATIC);
HWindowID = (Hlong)pWnd->m_hWnd;//获取父窗口句柄
pWnd->GetWindowRect(&Rect);
OpenWindow(0,0,Rect.Width(),Rect.Height(),HWindowID,"visible","",&m_HWindowID );
//显示静态图片
ReadImage(&ho_Image, "C:/Users/lenovo/Desktop/test.jpg");
GetImagePointer1(ho_Image,NULL,NULL,&m_ImageWidth,&m_ImageHeight);
SetPart(m_HWindowID,0,0,m_ImageHeight-1,m_ImageWidth-1);
DispObj(ho_Image, m_HWindowID);
}
其中,
  使用OpenWindow时将PictureControl控件的大小传进去,作为开辟的Halcon窗口的大小,这样两个窗口叠加在一起了。
 SetPart是Halcon函数,作用是调整图片在窗口中的位置(设定图片左上角坐标和右下角坐标)

试着将OpenWindow语句改为
OpenWindow(50,20,Rect.Width()-100,Rect.Height()-100,HWindowID,“visible”,"",&m_HWindowID );

猜你喜欢

转载自blog.csdn.net/qq_45780653/article/details/107653220