ブレンド効果

ブレンド効果を使用して、2 つの画像を結合します。 この効果には、26 のブレンド モードがあります。

この効果の CLSID は CLSID_D2D1Blend です。 

ブレンドの例

ブレンド効果のすべてのブレンド モードの画像例を次に示します。 ブレンド モードと対応するモード プロパティの完全な一覧については、次のセクションで説明します

使用可能なすべてのブレンド モードの効果の例のスクリーンショット。

除外モードを使用する別の例を次に示します。

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

blendEffect->SetInput(0, bitmap);
blendEffect->SetInput(1, bitmapTwo);
blendEffect->SetValue(D2D1_BLEND_PROP_MODE, D2D1_BLEND_MODE_EXCLUSION);

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

効果のプロパティ

表示名とインデックス一覧 説明
モード
D2D1_BLEND_PROP_MODE
効果に使用されるブレンド モード。 詳細については、「ブレンド モード」を参照してください。 型は D2D1_BLEND_MODE です。
既定値は D2D1_BLEND_MODE_MULTIPLY です。

ブレンド モード

次の表に、この効果のすべてのブレンド モードを示します。 効果の出力を計算するために必要なヘルパー関数は、次のセクションにあります。

色: OPRGB = f(FRGB, BRGB) * FA * BA + FRGB * FA * (1 - BA) + BRGB * BA * (1 - FA)

アルファ: OA = FA * (1 - BA) + BA

ここで:

  • OPRGB は、乗算済みの出力色です
  • OA は、出力アルファです
  • BRGB は、乗算済みではない出力先の色です
  • BA は、出力先のアルファです
  • FRGB は、乗算済みではないソースの色です
  • FA は、ソース アルファです
  • f(SRGB, DRGB) は、ブレンド モードごとに異なるブレンド関数です

一部のブレンド モードでは、色相、彩度、明度 (HSL) 色空間から RGB への変換が必要です。

列挙 方程式
D2D1_BLEND_MODE_DARKEN アルファのみの基本ブレンド式。 暗い効果の数式。
D2D1_BLEND_MODE_MULTIPLY アルファのみの基本ブレンド式。 乗算効果の数式。
D2D1_BLEND_MODE_COLOR_BURN f(FRGB, BRGB) = コーア バーン効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_LINEAR_BURN f(FRGB, BRGB) = 線形バーン効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_DARKER_COLOR アルファのみの基本ブレンド式。 暗い色効果の数式。
D2D1_BLEND_MODE_LIGHTEN アルファのみの基本ブレンド式。 明るい効果の数式。
D2D1_BLEND_MODE_SCREEN アルファのみの基本ブレンド式。 画面効果の数式。
D2D1_BLEND_MODE_COLOR_DODGE f(FRGB, BRGB) = 覆い焼きカラー効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_LINEAR_DODGE f(FRGB, BRGB) = 覆い焼きリニア効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_LIGHTER_COLOR アルファのみの基本ブレンド式。 明るい色効果の数式。
D2D1_BLEND_MODE_OVERLAY f(FRGB, BRGB) = オーバーレイ効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_SOFT_LIGHT f(FRGB, BRGB) = ソフト ライト効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_HARD_LIGHT f(FRGB, BRGB) = ハード ライト効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_VIVID_LIGHT f(FRGB, BRGB) = ビビッド ライト効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_LINEAR_LIGHT f(FRGB, BRGB) = リニア ライト効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_PIN_LIGHT f(FRGB, BRGB) = ピン ライト効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_HARD_MIX f(FRGB, BRGB) = ハード ミックス効果の数式。 を使用した基本ブレンド式
D2D1_BLEND_MODE_DIFFERENCE f(FRGB, BRGB) = abs(FRGB - BRGB) を使用した基本ブレンド式
D2D1_BLEND_MODE_EXCLUSION f(FRGB, BRGB) = FRGB + BRGB 2 * FRGB * BRGB を使用した基本ブレンド式
D2D1_BLEND_MODE_HUE アルファのみの基本ブレンド式。 色相ブレンド効果の数式。
D2D1_BLEND_MODE_SATURATION アルファのみの基本ブレンド式。 彩度ブレンド効果の数式。
D2D1_BLEND_MODE_COLOR アルファのみの基本ブレンド式。 カラー ブレンド効果の数式。
D2D1_BLEND_MODE_LUMINOSITY アルファのみの基本ブレンド式。 明度ブレンド効果の数式。
D2D1_BLEND_MODE_DISSOLVE たとえば、以下のように指定したとします。
  • 現在のピクセルのシーン座標 XY
  • シード座標 XY に基づく決定論的擬似乱数生成器 rand(XY)。[0, 1] からの値の偏りのない分布を持ちます。

ディゾルブ ブレンド効果の数式。
D2D1_BLEND_MODE_SUBTRACT アルファのみの基本ブレンド式。 減算ブレンド効果の数式。
D2D1_BLEND_MODE_DIVISION アルファのみの基本ブレンド式。 除算ブレンド効果の数式。

Note

すべてのブレンド モードで、出力値は乗算済みになり、[0, 1] の範囲にクランプされます。

HSL 色空間の変換

明度コンポーネントは、次の RGB 重みを使用して計算されます。

  • kR = 0.30
  • kG = 0.59
  • kB = 0.11

RGB から HSL への変換

rgb 色から hsl 色への変換を記述する数式。

これにより、SL は範囲 [0.0, 1.0] に、H は範囲 [-1.0, 5.0] に配置されます。

HSL から RGB への変換

もう一方の方法を変換するには、前の計算の逆関数を使用します。

S = 0 の場合、R = G = B = L

それ以外の場合は、次の 6 つの色相に依存するケースがあります。

H が 0 より大きい場合、値は赤/マゼンタのセクター (R>B>G) にあります。

hsl 色を rgb に変換する 6 つの数式ステップの 1。

H が 0 以上 1 未満の場合、値は赤/黄色のセクター (R>G>B) にあります。

hsl 色を rgb に変換する 6 つの数式ステップの 2。

H が 1 以上 2 未満の場合、値は黄色/緑のセクター (G>R>B) にあります。

hsl 色を rgb に変換する 6 つの数式ステップの 3。

H が 2 以上 3 未満の場合、値は緑/シアンのセクター (G>B>R) にあります。

hsl 色を rgb に変換する 6 つの数式ステップの 4。

H が 3 以上 4 未満の場合、値はシアン/青のセクター (B>G>R) にあります。

hsl 色を rgb に変換する 6 つの数式ステップの 5。

H が 4 以上の場合、値は青/マゼンタのセクター (B>R>G) にあります。

hsl 色を rgb に変換する 6 つの数式ステップの 6。

ブレンド モードでは、2 つの異なる色から HSL コンポーネントを任意に組み合わせることができるため、変換された RGB 値が色域外にあるのが一般的です。つまり、1 つ以上のチャネル コンポーネントが [0.0, 1.0] の有効範囲外である可能性があります。 これらの色は、彩度を最小限に抑えながら、色相と明度の両方を維持することで、色域に戻されます。

色域外インスタンスに必要な修正を記述する数式。

出力ビットマップ

この効果の出力ビットマップは、常に 2 つの入力画像の結合のサイズです。

サンプル コード

この効果の例については、Direct2D 複合効果モードのサンプルをダウンロードしてください。

要件

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

ID2D1Effect