颜色矩阵效果

使用颜色矩阵效果更改位图的 RGBA 值。

可以使用此效果来:

  • 从图像中删除颜色通道。
  • 减少图像中的颜色。
  • 交换颜色通道。
  • 组合颜色通道。

许多内置效果是颜色矩阵的专用化,针对效果的预期用途进行优化。 示例包括 饱和度色调旋转棕褐色温度和色调

此效果的 CLSID CLSID_D2D1ColorMatrix。

示例图

此处的示例显示了交换红色和蓝色通道的颜色矩阵效果的输入和输出图像。

之前
效果前的图像。
之后
转换后的图像。
ComPtr<ID2D1Effect> colorMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ColorMatrix, &colorMatrixEffect);

colorMatrixEffect->SetInput(0, bitmap);
D2D1_MATRIX_5X4_F matrix = D2D1::Matrix5x4F(0, 0, 1, 0,   0, 1, 0, 0,   1, 0, 0, 0,   0, 0, 0, 1,   0, 0, 0, 0);
colorMatrixEffect->SetValue(D2D1_COLORMATRIX_PROP_COLOR_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(colorMatrixEffect.Get());
m_d2dContext->EndDraw();

此效果将图像的 RGBA 值乘以 5x4 列主矩阵,如此公式所示。

矩阵定义示例。

此效果适用于直乘和预乘 alpha 图像。

效果属性

显示名称和索引枚举 说明
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
浮点值的 5x4 矩阵。 矩阵中的元素没有边界,并且是无单位的。
默认值为标识矩阵。
类型为D2D1_MATRIX_5X4_F。
默认值为 Matrix5x4F (1、0、0、0、0、1、0、0、0、0、1、0、0、0、0、1、0、0、0、0、0、0) 。
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
输出的 alpha 模式。 有关详细信息,请参阅 Alpha 模式
类型为D2D1_COLORMATRIX_ALPHA_MODE。
默认值为 D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED。
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
在效果将值传递给图形中的下一个效果之前,该效果是否将颜色值固定为 0 到 1 之间。 该效果在预乘 alpha 之前固定值。
如果将其设置为 TRUE,则效果将固定值。 如果将其设置为 FALSE,则效果不会固定颜色值,但如果其精度不够高,则其他效果和输出图面可能会限制这些值。
类型为 BOOL。
默认值是 FALSE。

Alpha 模式

名称 说明
D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED 该效果取消预乘输入,应用颜色矩阵,并预乘输出。
D2D1_COLORMATRIX_ALPHA_MODE_STRAIGHT 该效果将颜色矩阵直接应用于输入,并且不会对输出进行预乘。

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
最低受支持的服务器 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |Windows 应用商店应用]
标头 d2d1effects.h
d2d1.lib、dxguid.lib

ID2D1Effect