c++ - 使用 LoadImage() 中的 GetObjet() 后,BITMAP 结构中的 bmBit 始终为 NULL

标签 c++ bitmap

我正在尝试将存储在我的文件中的位图加载到我的应用程序中。我通过以下方式进行

HBITMAP hbitmap = NULL;
hbitmap = (HBITMAP)LoadImage(NULL,TEXT("F:\\Microsoft Visual Studio 2010 Projects\\test\\test\\bitmap1.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
BITMAP bmp;
GetObject(hbitmap,sizeof(BITMAP),&bmp);

在位图结构中,位图大小正确如下:

bmp {bmType=0 bmWidth=1920 bmHeight=1080 ...}   tagBITMAP
bmType          0          long
bmWidth         1920           long
bmHeight            1080           long
bmWidthBytes    7680           long
bmPlanes            1          unsigned short
bmBitsPixel         32         unsigned short
bmBits          0x00000000     void *

问题是指向位图的指针 bmBits 总是指向 NULL (0x00000000)。谁能告诉我如何解决这个问题?非常感谢!

最佳答案

这是记录在案的行为。来自 GetObject() 的 MSDN 文章:

If hgdiobj is a handle to a bitmap created by any other means, GetObject returns only the width, height, and color format information of the bitmap. You can obtain the bitmap's bit values by calling the GetDIBits or GetBitmapBits function.

关于c++ - 使用 LoadImage() 中的 GetObjet() 后,BITMAP 结构中的 bmBit 始终为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19276590/

相关文章:

c++ - 正确的类型转换以 boost 不同派生类的反序列化

android - 将图像存储在服务器上以与 Android 应用程序一起使用的大小

android - 如何绘制平滑的位图路径,没有任何中断

java - 如何将位图保存到android画廊

c++ - 如果没有单个虚函数,dynamic_cast 是否表现为 static_cast?

c++ - Waitpid 等待已失效的子进程

android - libgvr.so 链接最佳实践?

c++ - 数组初始化宏

android - Canvas 上带/不带 Alpha channel 的 Bitmap.Config 差异

android - 无法压缩回收的位图错误