D2D1_ALPHA_MODE列舉 (dcommon.h)
指定應如何處理位圖或轉譯目標的Alpha值。
Syntax
typedef enum D2D1_ALPHA_MODE {
D2D1_ALPHA_MODE_UNKNOWN = 0,
D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
D2D1_ALPHA_MODE_STRAIGHT = 2,
D2D1_ALPHA_MODE_IGNORE = 3,
D2D1_ALPHA_MODE_FORCE_DWORD = 0xffffffff
} ;
常數
D2D1_ALPHA_MODE_UNKNOWN 值: 0 Alpha 值可能沒有意義。 |
D2D1_ALPHA_MODE_PREMULTIPLIED 值: 1 Alpha 值已被預乘。 每個色彩都會先依 Alpha 值縮放。 Alpha 值本身在直線和預乘 Alpha 中都相同。 一般而言,沒有色彩色板值大於Alpha色板值。 如果預先乘法格式的色彩色板值大於Alpha色板,則標準來源過度混合數學會產生加法混合。 |
D2D1_ALPHA_MODE_STRAIGHT 值: 2 Alpha 值尚未預先乘法。 Alpha 色板表示色彩的透明度。 |
D2D1_ALPHA_MODE_IGNORE 值: 3 Alpha 值會被忽略。 |
D2D1_ALPHA_MODE_FORCE_DWORD 值: 0xffffffff |
備註
D2D1_ALPHA_MODE列舉會與D2D1_PIXEL_FORMAT列舉搭配使用,以指定轉譯目標或位圖的 Alpha 模式。 不同的轉譯目標和位圖支援不同的Alpha模式。 如需清單,請參閱 支援的圖元格式和 Alpha 模式。
直線與預乘Alpha之間的差異
使用直接 Alpha 描述 RGBA 色彩時,色彩的 Alpha 值會儲存在 Alpha 色板中。 例如,若要描述 60% 不透明紅色,您可以使用下列值: (255、0、0、0、255 * 0.6) = (255、0、0、153) 。 255 值表示全紅色,而 153 (60% 為 255) 表示色彩應該不透明度為 60%。使用預乘 Alpha 描述 RGBA 色彩時,每個色彩都會乘以 Alpha 值: (255 * 0.6、0*0.6、0*0.6、255 * 0.6) = (153、0、0、153) 。
無論轉譯目標的 Alpha 模式為何, D2D1_COLOR_F 值一律會解譯為直接 Alpha。 例如,指定 ID2D1SolidColorBrush 的色彩以搭配使用預先乘法 Alpha 模式的點陣圖時,您會指定色彩,就像使用直接 Alpha 一樣。 當您使用筆刷繪製時,Direct2D 會將色彩轉譯為您的目的格式。
轉譯目標的Alpha模式
無論Alpha模式設定為何,轉譯目標的內容都支援透明度。 例如,如果您使用alpha模式為 D2D1_ALPHA_MODE_IGNORE的轉譯目標繪製部分透明紅色矩形,則如果背景為白色) ,則矩形會以白色) 顯示 (。如果您在 Alpha 模式為 CreateCompatibleRenderTarget 方法時繪製部分透明的紅色矩形,) 建立支持透明度的位圖。
ClearType 和 Alpha 模式
如果您為轉譯目標指定 D2D1_ALPHA_MODE_IGNORE 以外的 Alpha 模式,文字反鋸齒模式會自動從 D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE 變更為 D2D1_TEXT_ANTIALIAS_MODE GRAYSCALE。 (當您指定 D2D1_ALPHA_MODE_UNKNOWN Alpha 模式時,Direct2D 會根據轉譯目標的類型為您設定 Alpha。如需每個轉譯目標 D2D1_ALPHA_MODE_UNKNOWN 設定解析為 的專案清單,請參閱 支援的圖元格式和 Alpha 模式 概觀。)您可以使用 SetTextAntialiasMode 方法將文字反鋸齒模式變更回 D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE,但將 ClearType 文字轉譯為透明介面可能會產生無法預期的結果。 如果您想要將 ClearType 文字轉譯為透明轉譯目標,建議您使用下列兩種技術之一。
- 使用 PushAxisAlignedClip 方法,將轉譯目標裁剪到將轉譯文字的區域,然後呼叫 Clear 方法並指定不透明色彩,然後轉譯文字。
- 使用 DrawRectangle 在將轉譯文字的區域後面繪製不透明的矩形。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows Vista 的 Windows 7、Windows Vista SP2 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 R2、Windows Server 2008 SP2 和 Platform Update for Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
標頭 | dcommon.h (包含 D2d1.h) |