次の方法で共有


ガンマ転送効果

ガンマ転送効果を使用して、各チャネルに指定した振幅、指数、オフセットを使用して作成されたガンマ関数を使用して、画像の色の強度をマップします。

この効果の 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' = 振幅 * C指数 + オフセット

この効果は、直線的で事前に乗算されたアルファ画像に対して機能します。 効果は、事前に乗算されたアルファ ビットマップを出力します。

効果のプロパティ

Note

ガンマ転送プロパティのすべてのチャネルの場合:

  • 振幅値は境界付けされておらず、単位なしです。
  • 指数値は境界付けされておらず、単位なしです。
  • オフセット値は境界付けされておらず、単位なしです。
表示名とインデックス列挙 説明
RedAmplitude
D2D1_GAMMATRANSFER_PROP_RED_AMPLITUDE
Red チャネルのガンマ伝達関数の振幅。 型は FLOAT です。
既定値は 1.0f です。
RedExponent
D2D1_GAMMATRANSFER_PROP_RED_EXPONENT
Red チャネルのガンマ伝達関数の指数。 型は FLOAT です。
既定値は 1.0f です。
RedOffset
D2D1_GAMMATRANSFER_PROP_RED_OFFSET
Red チャネルのガンマ伝達関数のオフセット。 型は 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 に設定すると、ガンマ転送関数が Green チャネルに適用されます。 型は BOOL です。
既定値は FALSE です。
BlueAmplitude
D2D1_GAMMATRANSFER_PROP_BLUE_AMPLITUDE
Blue チャネルのガンマ伝達関数の振幅。 型は FLOAT です。
既定値は 1.0f です。
BlueExponent
D2D1_GAMMATRANSFER_PROP_BLUE_EXPONENT
Blue チャネルのガンマ伝達関数の指数。 型は FLOAT です。
既定値は 1.0f です。
BlueOffset
D2D1_GAMMATRANSFER_PROP_BLUE_OFFSET
Blue チャネルのガンマ伝達関数のオフセット。 型は 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 ストア アプリ]
Header d2d1effects.h
ライブラリ d2d1.lib、dxguid.lib

ID2D1Effect