0

我编写了一个程序,它将位图文件(仅)加载到窗口中,它适用于任何具有扩展名的文件.bmp。但是我在进行测试时遇到了下一个问题。我拿了一个带有扩展名的文件.jpg,将其打开,Paint然后将其保存为 BMP 文件。当我开始使用这个新文件进行测试时,我的程序加载了一个黑色窗口。

我进行了调试,发现结构biColorUsed字段BITMAPINFOHEADER为零。根据doc,这意味着

位图使用与 biBitCount 成员的值对应的最大颜色数,用于 biCompression 指定的压缩模式。

biCompression字段也为零,这意味着文件未压缩。

biBitCount等于 24 这意味着(根据相同的文档)

bmiColors 颜色表用于优化基于调色板的设备上使用的颜色,并且必须包含由 BITMAPINFOHEADER 的 biClrUsed 成员指定的条目数

无法指定,因为biClrUsed它为零。

所以,问题是,文件是通过文件BMP转换创建的吗?JPGPaintBMP

PS 我在我的程序中使用 CreateDIBitmap 函数。当我BMP使用 LoadImage 加载相同的文件时,它工作正常。结构的任何其他字段BITMAPFILEHEADERBITMAPINFOHEADER都已正确加载。这就是为什么我认为我可以从BMP文件中正确加载数据。我可以将我的项目上传到 GoogleDrive,然后在需要时分享。

4

0 回答 0