D2D1_ALPHA_MODE 枚举 (dcommon.h)
指定应如何处理位图或呈现目标的 alpha 值。
语法
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 之间的差异
使用直 alpha 描述 RGBA 颜色时,颜色的 alpha 值存储在 alpha 通道中。 例如,若要描述不透明为 60% 的红色,请使用以下值: (255、0、0、255 * 0.6) = (255、0、0、153) 。 255 值表示全红色,153 (255) 的 60% 表示颜色的不透明度应为 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。 (当指定 alpha 模式D2D1_ALPHA_MODE_UNKNOWN时,Direct2D 会根据呈现目标的类型为你设置 alpha。有关每个呈现目标的 D2D1_ALPHA_MODE_UNKNOWN 设置解析为的列表,请参阅 支持的像素格式和 Alpha 模式 概述。)可以使用 SetTextAntialiasMode 方法将文本抗锯齿模式更改回 D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE,但将 ClearType 文本呈现到透明图面可能会产生不可预知的结果。 如果要将 ClearType 文本呈现到透明呈现目标,建议使用以下两种方法之一。
- 使用 PushAxisAlignedClip 方法将呈现目标剪裁到要呈现文本的区域,然后调用 Clear 方法并指定不透明颜色,然后呈现文本。
- 使用 DrawRectangle 在将呈现文本的区域后面绘制一个不透明矩形。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用] |
标头 | dcommon.h (包括 D2d1.h) |