色彩矩陣效果

使用色彩矩陣效果來改變點陣圖的 RGBA 值。

您可以使用此效果來:

  • 從影像中移除色彩色板。
  • 減少影像中的色彩。
  • 交換色彩通道。
  • 結合色彩色板。

許多內建效果都是色彩矩陣的特製化,已針對效果的用途優化。 範例包括 飽和度色調旋轉深色溫度和色調

此效果的 CLSID CLSID_D2D1ColorMatrix。

範例影像

此處的範例顯示交換紅色和藍色通道之色彩矩陣效果的輸入和輸出影像。

之前
效果之前的影像。
After
轉換之後的影像。
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、0、0、0、0、1、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