2011-04-17 93 views
1

我在API中有一個函數我正在使用該請求一個BITMAPINFO指針。我想給這個功能一個圖像。我的圖像是JPG/PNG。假設我將它們轉換爲BMP文件,但我仍然無法知道如何設置此結構。有沒有我可以使用它的Windows API?從Windows C++中的JPG/PNG文件創建一個BITMAPINFO

回答

3

您可以使用GDI +。使用Gdiplus::Bitmap :: FROMFILE
讀BMP/JPG/PNG/GIF加載和Gdiplus::Bitmap :: GetHBITMAP訪問HBITMAP然後BITMAPINFO

+0

這將使用** GDI + **,而不是GDI。 – 2011-04-17 15:24:28

+1

'HBITMAP'和'BITMAPINFO'之間的鏈接並不明顯。 ['GetObject'](http://msdn.microsoft.com/en-us/library/dd144904.aspx)函數將根據「HBITMAP」填充「DIBSECTION」結構,而「DIBSECTION」使用相同的'BITMAPINFOHEADER'子結構爲'BITMAPINFO'。 – 2011-04-17 15:37:16

2

快速谷歌打開這個MSDN文章:Sizing a JPEG or PNG Image顯示填充JPEG文件的BITMAPINFO的一種方式(將爲PNG工作)。

使用該頁面左側的鏈接可獲取有關位圖API的更多信息。

+0

請注意,此格式的「BITMAPINFO」可能不適用於「StretchDIBits」以外的函數。 – 2011-04-17 15:38:01

0

PNG文件,潛在的,alpha通道/透明度信息 - 轉換成時丟失位圖。你需要BITMAPINFO的函數實際上做了什麼?

如果您的方法是將文件轉換爲位圖;不要在運行時這樣做。 使用繪圖程序將文件轉換爲bmp。如前所述,您可以使用GDI +來使用幾種不同的本機格式; 但這樣做可能需要將您現有的GDI調用轉換爲GDI +。