次の方法で共有


明るさ効果

明るさ効果を使用して、イメージの明るさを制御します。

この効果の CLSID はCLSID_D2D1Brightness。

画像の例

以前は
効果の前に画像を します。
変換後にイメージを します。
ComPtr<ID2D1Effect> brightnessEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Brightness, &brightnessEffect);

brightnessEffect->SetValue(D2D1_BRIGHTNESS_PROP_BLACK_POINT, D2D1::Vector2F(0.0f, 0.2f));

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

Effect プロパティ

プロパティの表示名 型と既定値 形容
WhitePoint
D2D1_BRIGHTNESS_PROP_WHITE_POINT
D2D1_VECTOR_2F
{1.0f、1.0f}
明るさ伝達曲線の上部。 白い点は、画像の明るい部分の外観を調整します。 このプロパティは、x 値と y 値の両方をその順序で指定します。 このプロパティの各値は、0 ~ 1 の範囲です。
BlackPoint
D2D1_BRIGHTNESS_PROP_BLACK_POINT
D2D1_VECTOR_2F
{0.0f, 0.0f}
明るさ伝達曲線の下部。 黒い点は、画像の暗い部分の外観を調整します。 このプロパティは、x 値と y 値の両方をその順序で指定します。 このプロパティの各値は、0 ~ 1 の範囲です。

この効果は、指定された白と黒のポイントを使用して、ビットマップの調整に使用される転送関数を生成します。 次の式では、伝達関数について説明します。 入力強度は 0 から 1 の間で定義されます。

明るさアルゴリズムの

効果アルゴリズムは、伝達関数を作成する数式を実装します。 この関数を使用して、画像のピクセルを調整します。 黒い点と白い点の x と y の値は、変換を形成するために接続されている 2 次元の座標です。 最終的な出力式の各部分:

  1. 次の式を使用して、画像データを線形空間から非線形空間に変換します。ヘルパー関数 1

  2. 次の値に従ってイメージを調整します。

    • 入力 は、0 から 1 までの入力画像ピクセル強度値です。

    • *ホワイト Pt。 (x, y)*より明るいピクセル強度の変換曲線の位置。

    • 黒の Pt. (x,y) は、淡色ピクセル強度の変換曲線の位置です。

  3. 次の式を使用して、画像データを線形空間に変換します:ヘルパー関数 2

最終的な出力式とコンポーネント部分を次に示します。

明るさ調整する

出力ビットマップ

出力ビットマップ サイズは、入力ビットマップ サイズと同じです。

必要条件

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

ID2D1Effect