ブレンド効果
ブレンド効果を使用して、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();
Effect プロパティ
表示名とインデックス列挙 | 形容 |
---|---|
モード 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)
Alpha: OA = FA * (1 - BA) + BA
どこ:
- OPRGB は、事前乗算された出力色です
- O が出力アルファである
- 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 | 指定:
![]() |
D2D1_BLEND_MODE_SUBTRACT | アルファのみの基本ブレンド式。
![]() |
D2D1_BLEND_MODE_DIVISION | アルファのみの基本ブレンド式。
![]() |
手記
すべてのブレンド モードで、出力値は事前乗算され、[0, 1] の範囲にクランプされます。
HSL 色空間変換
明度コンポーネントは、次の RGB 重みを使用して計算されます。
- kR = 0.30
- kG = 0.59
- kB = 0.11
RGB から HSL への変換
これにより、S と L が [0.0, 1.0] の範囲に、H が [-1.0, 5.0] の範囲に配置されます。
HSL から RGB への変換
もう一方の方法を変換するには、前の計算の逆関数を使用します。
S = 0 の場合、R = G = B = L
それ以外の場合は、次の 6 つの色合いに依存するケースがあります。
H が 0 より大きい場合、値は赤/マゼンタセクターにあり、R >B>G。
H 0 以上 1 未満の場合、値は赤/黄色のセクターにあり、R >G>B。
H が 1 以上 2 未満の場合、値は、G >R>B黄色/緑のセクターにあります。
H が 2 以上 3 未満の場合、値は緑/シアンセクターにあり、G >B>R。
H が 3 以上 4 未満の場合、値はシアン/ブルーのセクターにあり、B>G>R が。
H が 4 以上の場合、値は青/マゼンタセクターにあり、B >R>G。
ブレンド モードでは、2 つの異なる色から HSL コンポーネントを任意に組み合わせることができるため、変換された RGB 値が色域外になるのが一般的です。つまり、1 つ以上のチャネル コンポーネントが [0.0, 1.0] の有効範囲外である可能性があります。 これらの色は、彩度を最小限に抑えながら、色相と明るさの両方を維持することで、色域に戻されます。
出力ビットマップ
この効果の出力ビットマップは、常に 2 つの入力イメージの和集合のサイズです。
サンプル コード
この効果の例については、Direct2D 複合効果モードのサンプルをダウンロードします。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
サポートされている最小サーバー | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
ヘッダ | d2d1effects.h |
図書館 | d2d1.lib、dxguid.lib |