ガンマ転送効果
ガンマ転送効果を使用して、各チャネルに指定した振幅、指数、オフセットを使用して作成されたガンマ関数を使用して、画像の色の強度をマップします。
この効果の CLSID はCLSID_D2D1GammaTransfer。 この効果を使用するには、リンカーの依存関係に dxguid.lib を追加します。
画像の例
以前は |
---|
効果の前に画像を ![]() |
後 |
変換後にイメージを ![]() |
ComPtr<ID2D1Effect> gammaTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1GammaTransfer, &gammaTransferEffect);
gammaTransferEffect->SetInput(0, bitmap);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_RED_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT, 0.25f);
gammaTransferEffect->SetValue(D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT, 0.25f);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(gammaTransferEffect.Get());
m_d2dContext->EndDraw();
この効果は、ここでの数式に基づいてガンマ伝達関数を適用します。
入力ピクセルの強度は C、出力ピクセルの強度は C' として表されます。 C' = Amplitude * CExponent + Offset
この効果は、直線的で事前に乗算されたアルファ画像に対して機能します。 この効果は、事前乗算されたアルファ ビットマップを出力します。
Effect プロパティ
手記
ガンマ転送プロパティのすべてのチャネルの場合:
- 振幅値は境界付けされておらず、単位なしです。
- 指数値は境界付けされておらず、単位なしです。
- オフセット値は境界付けされておらず、単位なしです。
表示名とインデックス列挙 | 形容 |
---|---|
RedAmplitude D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE |
赤チャネルのガンマ伝達関数の振幅。 型は FLOAT です。 既定値は 1.0f です。 |
RedExponent D2D1_GAMMATRANSFER_PROP_RED_EXPONENT |
赤チャネルのガンマ伝達関数の指数。 型は FLOAT です。 既定値は 1.0f です。 |
RedOffset D2D1_GAMMATRANSFER_PROP_RED_OFFSET |
赤チャネルのガンマ伝達関数のオフセット。 型は FLOAT です。 既定値は 0.0f です。 |
RedDisable D2D1_GAMMATRANSFER_PROP_RED_DISABLE |
これを TRUE に設定すると、転送関数は Red チャネルに適用されません。 ID 転送関数が使用されます。 これを FALSE に設定すると、ガンマ転送関数が Red チャネルに適用されます。 型は BOOL です。 既定値は FALSE です。 |
GreenAmplitude D2D1_GAMMATRANSFER_PROP_GREEN_AMPLITUDE |
緑チャネルのガンマ伝達関数の振幅。 型は FLOAT です。 既定値は 1.0f です。 |
GreenExponent D2D1_GAMMATRANSFER_PROP_GREEN_EXPONENT |
緑チャネルのガンマ伝達関数の指数。 型は FLOAT です。 既定値は 1.0f です。 |
GreenOffset D2D1_GAMMATRANSFER_PROP_GREEN_OFFSET |
緑チャネルのガンマ伝達関数のオフセット。 型は FLOAT です。 既定値は 0.0f です。 |
GreenDisable D2D1_GAMMATRANSFER_PROP_GREEN_DISABLE |
これを TRUE に設定すると、転送関数は Green チャネルに適用されません。 ID 転送関数が使用されます。 これを FALSE に設定すると、ガンマ伝達関数が緑チャネルに適用されます。 型は BOOL です。 既定値は FALSE です。 |
BlueAmplitude D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE |
青チャネルのガンマ伝達関数の振幅。 型は FLOAT です。 既定値は 1.0f です。 |
BlueExponent D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT |
Blue チャネルのガンマ伝達関数の指数。 型は FLOAT です。 既定値は 1.0f です。 |
BlueOffset D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET |
青チャネルのガンマ伝達関数のオフセット。 型は FLOAT です。 既定値は 0.0f です。 |
BlueDisable D2D1_GAMMATRANSFER_PROP_BLUE_DISABLE |
これを TRUE に設定した場合、転送関数は Blue チャネルに適用されません。 ID 転送関数が使用されます。 これを FALSE に設定すると、ガンマ転送関数が Blue チャネルに適用されます。 型は BOOL です。 既定値は FALSE です。 |
AlphaAmplitude D2D1_GAMMATRANSFER_PROP_ALPHA_AMPLITUDE |
アルファ チャネルのガンマ伝達関数の振幅。 型は FLOAT です。 既定値は 1.0f です。 |
AlphaExponent D2D1_GAMMATRANSFER_PROP_ALPHA_EXPONENT |
アルファ チャネルのガンマ伝達関数の指数。 型は FLOAT です。 既定値は 1.0f です。 |
AlphaOffset D2D1_GAMMATRANSFER_PROP_ALPHA_OFFSET |
アルファ チャネルのガンマ伝達関数のオフセット。 型は FLOAT です。 既定値は 0.0f です。 |
AlphaDisable D2D1_GAMMATRANSFER_PROP_ALPHA_DISABLE |
これを TRUE に設定した場合、転送関数はアルファ チャネルに適用されません。 ID 転送関数が使用されます。 これを FALSE に設定すると、ガンマ伝達関数がアルファ チャネルに適用されます。 型は BOOL です。 既定値は FALSE です。 |
ClampOutput D2D1_GAMMATRANSFER_PROP_CLAMP_OUTPUT |
効果がグラフの次の効果に値を渡す前に、効果が色の値を 0 から 1 の間にクランプするかどうかを指定します。 効果は、アルファをプリ乗算する前に値をクランプします。 これを TRUE に設定すると、効果によって値がクランプされます。 これを FALSE に設定すると、効果は色の値をクランプしませんが、精度が十分に高くない場合は、他の効果と出力サーフェスによって値がクランプされる可能性があります。 型は BOOL です。 既定値は FALSE です。 |
出力ビットマップ
出力ビットマップ サイズは、入力ビットマップ サイズと同じです。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
サポートされている最小サーバー | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
ヘッダ | d2d1effects.h |
図書館 | d2d1.lib、dxguid.lib |