次の方法で共有


算術複合効果

算術複合効果を使用して、入力画像のピクセルの加重合計を使用して 2 つの画像を結合します。

この効果の CLSID はCLSID_D2D1ArithmeticComposite。

計算式

ここでの数式は、この効果を計算するために使用されます。

出力rgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4

ここで、C1、C2、C3、C4 は、設定した係数です。

係数は、D2D1_VECTOR_4Fの値 (x、y、z、w) にマップされます。

  • x = C1
  • y = C2
  • z = C3
  • w = C4

画像の例

簡単な例として、ソースピクセルとターゲットピクセルを追加します。 この例では、2 つの丸い四角形が一緒に合成されています。 ソースの四角形は青で、変換先は赤です。

ここでの画像は、数式の係数がここでの値に設定された算術複合効果の出力です。

  • C1 = 0
  • C2 = 1
  • C3 = 1
  • C4 = 0

算術複合効果を使用して重なる同じサイズの 2 つの丸い四角形を示す画像の例。

その結果、ソースとターゲットのピクセル値が追加されます。 四角形が RGBA 値と重なっていない領域はすべて 0 です。 R と B の両方の値が最大であるため、四角形が色と重なっている場合はマゼンタです。

コードを含む別の例の画像を次に示します。

画像 1 より前
効果の前の最初のソース イメージ。
画像 2 の前
効果の前の 2 番目の画像。
クリック後
変換後のイメージ。
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);

arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();

Effect プロパティ

表示名とインデックス列挙 説明
係数
D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS
2 つの入力画像を合成するために使用される数式の係数。 係数はユニトレスで無制限です。 型がD2D1_VECTOR_4F。
既定値は {1.0f、0.0f、0.0f、0.0f} です。
ClampOutput
D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT
効果は、効果がグラフの次の効果に値を渡す前に、色の値を 0 から 1 にクランプします。
これを TRUE に設定すると、効果によって値がクランプされます。 これを FALSE に設定した場合、効果は色の値を固定しませんが、他の効果と出力サーフェスでは、十分な精度が得られない場合は値がクランプされる可能性があります。
型は BOOL です。
既定値は FALSE です。

出力ビットマップ

出力ビットマップは係数値によって異なります。 これらは、可能な出力ビットマップ サイズです。

  • C1 が 0 以外の唯一の係数の場合、出力サイズは入力四角形の積集合になります。
  • C2 が 0 以外の唯一の係数の場合、出力サイズは Source 四角形のサイズです。
  • C3 が 0 以外の唯一の係数である場合、出力サイズは Destination 四角形のサイズです。
  • すべての係数が 0 の場合、出力サイズは空の四角形になります。
  • 他のすべての係数値の場合、出力サイズは入力四角形の和集合です。

必要条件

要件
サポートされている最小のクライアント Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
サポートされている最小のサーバー Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
ヘッダー d2d1effects.h
ライブラリ d2d1.lib、dxguid.lib

ID2D1Effect