颜色矩阵效果

使用颜色矩阵效果更改位图的 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、1、0、0、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