點陣圖示頭類型
點陣圖有四種基本標頭類型:
四種類型的位圖標頭會以 Size 成員區分,這是每個結構中的第一個 DWORD 。
BITMAPV5HEADER 結構是擴充BITMAPV4HEADER結構,這是延伸的 BITMAPINFOHEADER 結構。 不過, BITMAPINFOHEADER 和 BITMAPCOREHEADER 只有與其他點陣圖標頭結構通用的 Size 成員。
BITMAPCOREHEADER 和BITMAPV4HEADER格式已分別由 BITMAPINFOHEADER 和 BITMAPV5HEADER 格式取代。 BITMAPCOREHEADER 和BITMAPV4HEADER格式會呈現為完整性和回溯相容性。
DIB 的格式如下(如需詳細資訊,請參閱 位圖記憶體 ):
- BITMAPFILEHEADER 結構
- BITMAPCOREHEADER、BITMAPINFOHEADER、BITMAPV4HEADER或BITMAPV5HEADER結構。
- 選擇性的色彩數據表,這是一組 RGBQUAD 結構或一組 RGBTRIPLE 結構。
- 點陣圖數據
- 選擇性配置檔數據
色彩表格描述圖元值如何對應至 RGB 色彩值。 RGB 是用來描述由發出光線所產生的色彩的模型。
配置檔數據 是指配置檔檔名稱(連結設定檔)或實際的配置檔位(內嵌配置檔)。 檔格式會將配置檔數據放在檔案結尾。 配置文件數據會放在色彩數據表後面(如果有的話)。 不過,如果函式收到封裝的 DIB,配置檔數據會在點陣陣之後出現,例如檔案格式。
配置文件數據只會存在於 bV5CSType 為 PROFILE_LINKED 或 PROFILE_EMBEDDED 的BITMAPV5HEADER結構。 對於接收已封裝 DIB 的函式,配置檔數據會在點陣圖數據之後。
已淡化裝置是使用調色盤指派色彩的任何裝置。 平淡裝置的傳統範例是以 8 位色彩深度執行的顯示器(也就是 256 種色彩)。 此模式中的顯示會使用小型色彩表格將色彩指派給點陣圖。 位圖中的色彩會指派給裝置所使用的調色盤中最接近的色彩。 已解決的裝置不會建立顯示點陣圖的最佳調色盤;它只會使用目前調色盤中的任何專案。 應用程式會負責建立調色盤,並將其選取到系統中。 一般而言,每圖元 16、24 和 32 位位 (bpp) 位圖不包含色表(也就是點陣圖的最佳調色盤):在此情況下,應用程式會負責產生最佳調色盤。 不過,16-、24 和 32-bpp 位陣圖可以包含這類最佳色彩表,以便顯示在已淡化裝置上;在此情況下,應用程式只需要根據位圖檔案中存在的色彩數據表來建立調色盤。
1、4 或 8 bpp 的點陣圖必須具有以 bpp 為基礎的大小上限的色彩數據表。 1、4 和 8 bpp 位圖的大小上限是 bpp 的 2 到 bpp 的功率。 因此,1 bpp 位陣陣圖最多有兩種色彩,4 個 bpp 位陣圖最多有 16 種色彩,而 8 個 bpp 位陣圖最多有 256 種色彩。
16-、24 或 32-bpp 的點陣圖不需要色彩數據表,但可能必須指定已淡化裝置的色彩。 如果 16-、24 或 32-bpp 位陣圖有色彩數據表, biClrUsed 成員會指定色彩數據表的大小,而且色彩數據表中必須有這麼多色彩。 如果 biClrUsed 為零,則沒有色彩數據表。
BI_BITFIELD位圖的紅色、綠色和藍色位域遮罩會緊接 在BITMAPINFOHEADER、 BITMAPV4HEADER和 BITMAPV5HEADER 結構後面。 BITMAPV4HEADER和BITMAPV5HEADER結構包含紅色、綠色和藍色遮罩的其他成員,如下所示。
member | 意義 |
---|---|
RedMask | 指定每個像素紅色元件的色彩掩碼,只有在 Compression 成員設定為 BI_BITFIELDS時才有效。 |
GreenMask | 指定每個像素綠色元件的色彩遮罩,只有在 Compression 成員設定為 BI_BITFIELDS 時才有效。 |
BlueMask | 指定每個像素藍色元件的色彩遮罩,只有在 Compression 成員設定為 BI_BITFIELDS 時才有效。 |
當 BITMAPINFOHEADER 的 biCompression 成員設定為 BI_BITFIELDS 且函式會收到 LPBITMAPINFO 類型的自變數時,色彩遮罩會緊接在標頭後面。 如果存在,色彩數據表將會遵循色彩遮罩。 BITMAPCOREHEADER 位圖不支援色彩遮罩。
根據預設,位圖數據會以其格式由下至上。 由下而下表示位陣圖資料中的第一個掃描行是要顯示的最後一個掃描行。 例如,第0個掃描線的第0個像素,點陣圖數據10像素 x 10 像素的點陣圖會是顯示或列印影像的第9個掃描線的第0個像素。 運行長度編碼 (RLE) 格式點陣圖和 BITMAPCOREHEADER 位圖不可以是由上而下位的點陣圖。 掃描行會對 齊 DWORD ,但 RLE 壓縮的點陣圖除外。 除了 RLE 壓縮點陣圖之外,它們必須填補掃描線條寬度,以位元組為單位,這些寬度不會平均除四個。 例如,10 x 10 像素 24-bpp 位陣陣圖在每個掃描行結尾會有兩個填補位元組。