明るさ効果
明るさ効果を使用して、イメージの明るさを制御します。
この効果の 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
次の値に従ってイメージを調整します。
入力 は、0 から 1 までの入力画像ピクセル強度値です。
*ホワイト Pt。 (x, y)*より明るいピクセル強度の変換曲線の位置。
黒の Pt. (x,y) は、淡色ピクセル強度の変換曲線の位置です。
次の式を使用して、画像データを線形空間に変換します:ヘルパー関数 2
最終的な出力式とコンポーネント部分を次に示します。
明るさ調整する
出力ビットマップ
出力ビットマップ サイズは、入力ビットマップ サイズと同じです。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
サポートされている最小サーバー | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
ヘッダ | d2d1effects.h |
図書館 | d2d1.lib、dxguid.lib |