次の方法で共有


カラー マトリックス効果

カラー マトリックス効果を使用して、ビットマップの 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 値に 5 x 4 の列の主行列が乗算されます(この数式を参照)。

マトリックス定義の例。

この効果は、直線的で前乗算されたアルファ画像に対して機能します。

Effect プロパティ

表示名とインデックス列挙 Description
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
浮動小数点値の 5 x 4 行列。 マトリックス内の要素は境界付けされておらず、単位なしです。
既定値は ID マトリックスです。
型が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, 0, 0, 0) です。
AlphaMode
D2D1_COLORMATRIX_PROP_ALPHA_MODE
出力のアルファ モード。 詳細については、「 アルファ モード 」を参照してください。
型がD2D1_COLORMATRIX_ALPHA_MODE。
既定値は D2D1_COLORMATRIX_ALPHA_MODE_PREMULTIPLIED です。
ClampOutput
D2D1_COLORMATRIX_PROP_CLAMP_OUTPUT
効果がグラフの次の効果に値を渡す前に、効果が色の値を 0 から 1 にクランプするかどうか。 効果は、アルファ をプリ乗算する前に値をクランプします。
これを TRUE に設定すると、効果によって値がクランプされます。 これを FALSE に設定した場合、効果は色の値を固定しませんが、他の効果と出力サーフェスでは、十分な精度が得られない場合は値がクランプされる可能性があります。
型は BOOL です。
既定値は FALSE です。

アルファ モード

名前 Description
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