次の方法で共有


カラー マトリックス効果

カラー マトリックス効果を使用して、ビットマップの 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 の列主行列を乗算します。

マトリックス定義の例を します。

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

Effect プロパティ

表示名とインデックス列挙 形容
ColorMatrix
D2D1_COLORMATRIX_PROP_COLOR_MATRIX
浮動小数点値の 5x4 行列。 行列内の要素は境界付けされておらず、単位がありません。
既定値は ID マトリックスです。
型は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, 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 です。

アルファ モード

名前 形容
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