次の方法で共有


ガンマ転送効果

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

この効果の 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

ID2D1Effect