共用方式為


色彩矩陣效果

使用色彩矩陣效果來改變位圖的 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, 1, 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