共用方式為


HT_Get8BPPMaskPalette函式 (winddi.h)

HT_Get8BPPMaskPalette函式會針對每圖元裝置類型 8 位傳回遮罩選擇區。

語法

LONG HT_Get8BPPMaskPalette(
  [in, out] LPPALETTEENTRY pPaletteEntry,
  [in]      BOOL           Use8BPPMaskPal,
  [in]      BYTE           CMYMask,
  [in]      USHORT         RedGamma,
  [in]      USHORT         GreenGamma,
  [in]      USHORT         BlueGamma
);

參數

[in, out] pPaletteEntry

要填入的 Windows SDK 檔 (描述之 PALETTEENTRY 結構的陣列指標) 。 GDI 假設其指向有效的記憶體空間,其中 GDI 可以放置整個 8 位每圖元半色調調色盤。

對於在 Windows XP 和更新版本的作業系統版本上執行的驅動程式,GDI 會檢查 pPaletteEntry[0] 以判斷如何傳回撰寫的 CMY 調色盤。 如果 pPaletteEntry[0] 設定為 'RGB0',調色盤會處於其中一種CMY_INVERTED模式,而且會反轉其索引。 也就是說,調色盤中的索引 0 為黑色,而索引 255 為白色。 如果 pPaletteEntry[0] 未設定為 'RGB0',則調色盤是一般 CMY 調色盤,索引 0 為白色,索引為黑色 255。 如需如何使用此參數的新需求,請參閱 使用 GDI 8 位每圖元 CMY 遮罩模式 和詳細資料。

Windows 2000 會忽略驅動程式在 pPaletteEntry[0] 中放置的任何值。 因此,如果您的驅動程式是要在 Windows 2000 Windows XP 或更新版本上執行,而您的驅動程式會將 pPaletteEntry[0] 設定為 'RGB0',則驅動程式從 Windows XP 接收的點陣圖和更新版本可能會有其色彩反轉,相對於從 Windows 2000 接收的點陣圖。 因此,這類驅動程式必須先檢查調色盤,才能下載點陣圖。

[in] Use8BPPMaskPal

指出應該傳回何種類型的調色盤。 當Use8BPPMaskPalTRUE時,HT_Get8BPPMaskPalette使用 CMY 調色盤的位址來設定pPaletteEntry參數, (CMYMask中指定的位元遮罩所描述的 PALETTEENTRY 結構陣列) 。 當 Use8BPPMaskPalFALSE時,函式會將pPaletteEntry設定為標準 RGB 每圖元 8 位半色調調色盤的位址。

[in] CMYMask

指定 pPaletteEntry 所指向之 PALETTEENTRY結構陣列的相關資訊。 這個參數的值可以是下列其中一個:

意義
0 具有 256 個層級的灰階
1 每個青色、紅色和黃色 (各有五個層級,範圍從 0 到 4) ,總共 125 種色彩
2 每個青色、洋紅色和黃色 (各有六個層級,範圍從 0 到 5) ,總共 216 種色彩
3 到 255 位元遮罩,指定分別指定青色、magenta 和黃色的層級數目上限。
 

在 Windows 2000 上執行的驅動程式應限制為每圖元單色 8 位。 也就是說,使用的 CMYMask 值應該是 0。

針對 Windows XP 和更新版本的作業系統版本,以及 CMYMask的所有值, pPaletteEntry[0] 中的值會決定 pPaletteEntry[0] 後面的調色盤是否為一般 CMY 調色盤,或其中一個CMY_INVERTED模式調色盤。 如需詳細資訊,請參閱 pPaletteEntry 參數的描述。

對於 CMYMask 的值,從 3 到 255 包含,此值是位元遮罩,其中位群組具有下列意義:

  • 三個最高位 (位 7,6,5) 指定青色層級的數目。 最多可以有七層青色 (層級 1 到 7) 。
  • 中間的三個位 (位 4,3,2) 指定 magenta 的層級數目。 最多可以有七個層級的 magenta (層級 1 到 7) 。
  • 兩個最低位 (位 1,0) 指定黃色層級的數目。 最多可以有三層黃色 (層級 1 到 3) 。
對於範圍從 3 到 255 的 CMYMask 值,其中青色、magenta 或黃色層級位的任何位元遮罩組合都無效。 在這種情況下, HT_Get8BPPMaskPalette 會傳回零的調色盤計數。 如需詳細資訊,請參閱 使用 GDI 8 位每圖元 CMY 遮罩模式

[in] RedGamma

如果 Use8BPPMaskPalTRUE,則不會使用此參數的值。 在此情況下,gamma 值將會在GDIINFO結構的ciDevice成員中指定。

如果 Use8BPPMaskPalFALSE,則此參數的值會指定紅色 gamma 值,而 GDI 用來更正調色盤的紅色、綠色和藍色 Gamma 值。 USHORT 值會解譯為實數,其四個最小有效位數位于小數點右邊。 例如,gamma 值為 10000 代表實數 1.0000,而 12345 則代表 1.2345。 允許的最小 gamma 值為 0.0000,而允許的最大值為 6.5535。

[in] GreenGamma

如果 Use8BPPMaskPalTRUE,則不會使用此參數的值。 在此情況下,gamma 值將會在GDIINFO結構的ciDevice成員中指定。

如果 Use8BPPMaskPalFALSE,此參數的值會指定綠色 gamma 值,而 GDI 用來更正調色盤的紅色、綠色和藍色 Gamma 值。 USHORT 值會解譯為實數,其四個最小有效位數位于小數點右邊。 例如,gamma 值為 10000 代表實數 1.0000,而 12345 則代表 1.2345。 允許的最小 gamma 值為 0.0000,而允許的最大值為 6.5535。

[in] BlueGamma

如果 Use8BPPMaskPalTRUE,則不會使用此參數的值。 在此情況下,gamma 值將會在GDIINFO結構的ciDevice成員中指定。

如果 Use8BPPMaskPalFALSE,則此參數的值會指定藍色 gamma 值,以從 GDI 用來更正調色盤的紅色、綠色和藍色 Gamma 值中指定。 USHORT 值會解譯為實數,其四個最小有效位數位于小數點右邊。 例如,gamma 值為 10000 代表實數 1.0000,而 12345 則代表 1.2345。 允許的最小 gamma 值為 0.0000,而允許的最大值為 6.5535。

傳回值

如果 pPaletteEntry 不是 NullHT_Get8BPPMaskPalette 會傳回 GDI 填入 pPaletteEntry 所指向陣列中的 PALETTEENTRY 結構數目。 如果 pPaletteEntryNull,傳回的值就是儲存半色調調色盤所需的 PALETTEENTRY 結構總數。

如果在呼叫此函式時使用了 不合法的 CMYMask 參數值, HT_Get8BPPMaskPalette 會傳回零的值。

備註

PALETTEENTRY 結構記載于 Windows SDK 檔中。

使用Use8BPPMaskPal設定FALSE呼叫HT_Get8BPPMaskPalette相當於呼叫HT_Get8BPPFormatPalette

如需此函式及其參數的使用方式的詳細資訊,請參閱 使用 GDI 8 位每圖元 CMY 遮罩模式

規格需求

   
最低支援的用戶端 適用于 Windows 2000 和更新版本的 Windows 作業系統。
目標平台 Universal
標頭 winddi.h (包含 Winddi.h)
程式庫 Win32k.lib
Dll Win32k.sys

另請參閱

HT_Get8BPPFormatPalette