嗨, 我正在使用 loadImage 加载一个 24 位 bmp 文件,然后尝试获取 bmp 信息
hBitmap = (HBITMAP)LoadImage(NULL, "logo.bmp", IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_DEFAULTSIZE)
GetObject( hBitmap, sizeof(BITMAP), &bm );
当我对 Windows 颜色显示设置 32 hi color 执行相同的操作时,我得到了以下值 bmBitsPixel = 32 但如果我将 Windows 颜色显示设置为 16 比我得到的 bmBitsPixel = 16
谁能解释一下这是什么意思。 如果我使用以下公式计算 bmp 的大小而不是 bmp 的大小取决于窗口颜色设置。
大小 = bmWidth * bmHeight * bmBitsPixel/8
感谢和问候
最佳答案
HBITMAP
是一个 device-dependent bitmap : 它的内部表示取决于屏幕的颜色格式。
相应地,如果您将显示颜色格式设置为每像素 32 位 (bpp),那么您的位图将使用 32 bpp。如果您将颜色格式切换为 16 bpp,位图将跟随并使用 16 bpp。
您的公式是正确的,在计算位图大小时必须考虑 bmBitsPixel
。
关于c - LoadImage 的工作方式因获胜颜色设置而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022107/