支持的像素格式和 Alpha 模式
http://msdn.microsoft.com/zh-cn/library/dd756766(v=VS.85).aspx#section_9_2
http://wenku.baidu.com/link?url=iqT1yzec-uWl731k34PuoLza36m18cUQU2QNo7N6W9ZJU5lOnd7YyUgdxCGcI3VZLhgg5BOvIupfkG9u5oIQhlczAd6tFgc1fa4IwW3g4pW
http://msdn.microsoft.com/zh-cn/library/dd756766(v=VS.85).aspx#section_9_2
关于 Alpha 模式
关于预乘和直接 Alpha 模式
D2D1_ALPHA_MODE 枚举指示 Alpha 通道是使用预乘 Alpha、直接 Alpha 还是应被忽略并视为不透明。对于直接 Alpha,Alpha 通道指示一个对应于颜色的透明度的值。
请注意,无论目标格式如何,Direct2D 绘制命令和画笔都始终将颜色视为直接 Alpha。
对于预乘 Alpha,每个颜色通道使用 Alpha 值进行缩放。通常,所有颜色通道值都不会大于 Alpha 通道值。如果预乘格式的颜色通道值大于 Alpha 通道值,则标准的源上混合算法会创建加法混合。
在直接 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 会将颜色转换为您的目标格式。