英語で読む

次の方法で共有


明るさの効果

明るさ効果を使用して、画像の明るさを制御します。

この効果の 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. 次の値に従ってイメージを調整します。

    • input は、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