鱼C论坛

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

[已解决]GetHeight

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

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

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

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

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

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

解决方法是,在你调用  Detach  方法之前获取高度。以下是修改后的代码:
CImage nImage;
nImage.Load(_T("D:\\bb\\tu\\li1.jpg")); //载入文件图像

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

HBITMAP hBitmap = nImage.Detach(); //转换成HBITMAP
//位图与CImage对象相分离
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  方法之前获取高度。以下是修改后的代码:
CImage nImage;
nImage.Load(_T("D:\\bb\\tu\\li1.jpg")); //载入文件图像

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

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 09:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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