C ++ WINAPI CreateDIBitmap麻烦

时间:2014-02-07 23:40:29

标签: c++ windows bitmap paint dib

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

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

  

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

biCompression字段也为零,表示文件未压缩。

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

  

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

无法指定,因为biClrUsed为零。

所以,问题是,BMP文件使用JPG转换为Paint文件来创建BMP文件吗?

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

0 个答案:

没有答案