鱼C论坛

 找回密码
 立即注册
查看: 240|回复: 2

[已解决]GetHeight

[复制链接]
发表于 2023-7-25 05:37:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1.         CImage nImage;
  2.         nImage.Load(_T("D:\\bb\\tu\\li1.jpg")); //载入文件图像
  3.         HBITMAP hBitmap = nImage.Detach();  //转换成HBITMAP
  4.         //位图与CImage对象相分离
  5.         mypicture.SetBitmap(hBitmap); //在picture控件中显示
  6.        
  7.        

  8.         int height = nImage.GetHeight();//获取当前图像的高度


复制代码


我的问题:在执行 int height = nImage.GetHeight()时出现问题
最佳答案
2023-7-25 05:37:20
问题出在这一行  HBITMAP hBitmap = nImage.Detach(); 。当你调用  Detach  方法时,这会分离  CImage  对象和它的位图。也就是说, CImage  对象不再拥有这个位图,所以你不能再用它来获取高度。

解决方法是,在你调用  Detach  方法之前获取高度。以下是修改后的代码:

  1. CImage nImage;
  2. nImage.Load(_T("D:\\bb\\tu\\li1.jpg")); //载入文件图像

  3. int height = nImage.GetHeight(); //获取当前图像的高度

  4. HBITMAP hBitmap = nImage.Detach(); //转换成HBITMAP
  5. //位图与CImage对象相分离
  6. mypicture.SetBitmap(hBitmap); //在picture控件中显示
复制代码


这样,你就可以在分离位图之前,先获取图像的高度了。
11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-25 05:37:16 | 显示全部楼层
关于在 MFC 中使用 CImage 的 GetHeight() 函数出现问题的解答:

根据您提供的代码,在执行 int height = nImage.GetHeight(); 时出现问题。这可能是由于以下原因导致的:

1. CImage 对象未成功加载图像:在调用 Load() 函数之前,请确保图像文件的路径是正确的,并且图像文件存在。如果图像文件不存在或路径有误,nImage 对象将无法成功加载图像,从而导致后续调用 GetHeight() 函数时出现问题。

2. 位图没有成功转换为 HBITMAP:在调用 Detach() 函数之前,请确保 nImage 对象已经成功加载了图像。如果图像加载失败或者 hBitmap 为空,那么后续调用 SetBitmap()GetHeight() 函数都会出现问题。

3. 未正确初始化 MFC 库:在使用 MFC 相关的函数之前,需要先正确地初始化 MFC 库。可以通过在 WinMain() 函数中调用 AfxWinInit() 或者在应用程序的 InitInstance() 函数中调用 AfxInitRichEdit2() 来进行初始化。

4. 缺少头文件或链接库:请确保代码中包含了正确的头文件和链接库,如 atlimage.hgdiplus.hafxdialogex.h 等。

请检查上述问题,并逐一排查可能的原因。如果问题仍然存在,请提供更多详细的错误信息或上下文,以便我可以帮助您更好地解决问题。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 05:37:20 | 显示全部楼层    本楼为最佳答案   
问题出在这一行  HBITMAP hBitmap = nImage.Detach(); 。当你调用  Detach  方法时,这会分离  CImage  对象和它的位图。也就是说, CImage  对象不再拥有这个位图,所以你不能再用它来获取高度。

解决方法是,在你调用  Detach  方法之前获取高度。以下是修改后的代码:

  1. CImage nImage;
  2. nImage.Load(_T("D:\\bb\\tu\\li1.jpg")); //载入文件图像

  3. int height = nImage.GetHeight(); //获取当前图像的高度

  4. HBITMAP hBitmap = nImage.Detach(); //转换成HBITMAP
  5. //位图与CImage对象相分离
  6. mypicture.SetBitmap(hBitmap); //在picture控件中显示
复制代码


这样,你就可以在分离位图之前,先获取图像的高度了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 22:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表