使用Halcon库,在MFC界面打开显示图片,可实现多次打开不同图片

简介: 使用Halcon库,在MFC界面打开显示图片,可实现多次打开不同图片

网上有很多博客介绍使用Halcon库,在MFC界面打开显示图片。图片显示在静态图片控件,STATIC PICTURE CTRL。


但是网上的案例都没有实现多次点击"打开"按钮,使得可以在PIC控件里显示不同的图片;即,打开一张图片可以显示在PIC控件,再打开第二张图片时,PIC控件没有刷新,还是显示第一张图。


这里笔者分享一下自己的方法,我和他们的不同之处在于实现了C++异常处理和连续打开并显示不同的图片:

//构造文件对话框对象
  CFileDialog readfileDlg(TRUE, NULL, NULL, 0, _T("图像文件(*.bmp)|*.bmp||"), this);
  if (IDOK == readfileDlg.DoModal())
  {
    m_strPathTemplateOk = readfileDlg.GetPathName();
    //声明标识,函数T2A和W2A均支持ATL和MFC中的字符
  USES_CONVERSION;
  std::string s(W2A(m_strPathTemplateOk));
  const char *filename = s.c_str();
  try
  {
    ReadImage(&m_ImageOK, filename);//文件如果不存在会抛出异常
  }
  catch (HException* e)//很奇怪,这里捕获不到
  {
    UNUSED_PARAMETER(e);
    return FALSE;
  }
  catch (...)//能处理任何异常的代码
  {
    return FALSE;
  }
  if (!m_ImageOK.IsInitialized())
  {
    return FALSE;
  }
  HTuple width, height;
  GetImageSize(m_ImageOK, &width, &height);
  CRect rect;
  HWND hImgWnd = GetDlgItem(IDC_STATIC_PIC_TEMPLATE)->m_hWnd;
  GetDlgItem(IDC_STATIC_PIC_TEMPLATE)->GetClientRect(&rect);
  if (HDevWindowStack::IsOpen())
  {
    close_window(HDevWindowStack::Pop());//这段话很重要,否则无法连续打开图像显示,仅仅固定显示第一幅图
  }
  HTuple hv_WindowHandle;
  OpenWindow(rect.left, rect.top, rect.Width(), rect.Height(), (Hlong)hImgWnd, "visible", "", &hv_WindowHandle);
  HDevWindowStack::Push(hv_WindowHandle);//这段话很重要,否则无法连续打开图像显示,仅仅固定显示第一幅图
  SetPart(hv_WindowHandle, 0, 0, height, width);//设置显示的图像范围
  DispObj(m_ImageOK, hv_WindowHandle);
  }


不需要依赖动态库文件hcanvas.dll,只需要halcon.dll和halconcpp.dll这两个即可。




---


姊妹篇:


《使用Halcon库,在Qt界面打开显示图片,可实现多次打开不同图片》


https://libaineu2004.blog.csdn.net/article/details/113925024


相关文章
|
4月前
|
Linux 开发者 iOS开发
QT:基于QMediaPlayer制作的视频播放器(最下方有整合包,可直接运行)
QMediaPlayer是Qt多媒体模块中的一个核心类,它提供了播放音频和视频内容的功能。这个类的设计旨在简化跨平台的媒体播放,使得开发者能够在多种操作系统(如Linux、Windows、macOS及移动平台)上轻松集成多媒体播放能力到他们的应用中,而无需关心底层实现细节。以下是关于QMediaPlayer的一些关键点:
501 1
|
6月前
在MFC上基于halcon库的打开图片方法实现多次打开不同的图片
在MFC上基于halcon库的打开图片方法实现多次打开不同的图片
44 0
|
网络协议 网络安全 C++
Qt | 显示网络图片 QNetworkAccessManager
有事我们需要加载网络图片而非本地图片,文章介绍了qt控件显示网络图片的方法。
864 0
MFC学习——如何在MFC对话框中添加一个显示网页的窗口(用vs2017以下版本,vs2017不支持)
MFC学习——如何在MFC对话框中添加一个显示网页的窗口(用vs2017以下版本,vs2017不支持)
377 0
|
数据安全/隐私保护
Qt-网易云音乐界面实现-2 红红的程序运行图标,和相似下方音乐条
被调出来出差了,这次出差可以说是非常不开心,这次出差也算给我自己提了个醒吧,那就是注意自己的精力,自己的口碑,和比人对自己的信任。具体内容如下
141 0
Qt-网易云音乐界面实现-2 红红的程序运行图标,和相似下方音乐条
|
Windows
Win10系统怎样让图片的打开方式为照片查看器?
在Win10系统中有一个最不方便的地方就是图片的打开方式没有照片查看器,如果想恢复传统的照片查看器该怎么操作呢? 方法步骤:   1. 首先,我们需要使用 注册表编辑器 来开启Win10系统照片查看器功能,因为其实这个功能是被隐藏了,那么按下 Windows徽标键+R键 ,打开运行命令窗口,输入 regedit 命令。
1214 0
|
存储 C++ 计算机视觉
CMFCShellList和自定义ShellList结合使用,达到“直接浏览缩略图,双击打开图片”
在GOPaint的设计研究过程中,我一直希望能够实现这样的结果(A B C 3个步骤) 在我之前的博客里面,曾经有过缩略图显示的现就(http://www.cnblogs.com/jsxyhelu/p/5493329.html   ),也应用到了实际的项目中。
964 0
下一篇
无影云桌面