lm68140318 发表于 2023-7-25 05:37:02

GetHeight

        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()时出现问题

Mike_python小 发表于 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.h、gdiplus.h、afxdialogex.h 等。

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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 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控件中显示


这样,你就可以在分离位图之前,先获取图像的高度了。
页: [1]
查看完整版本: GetHeight