次の方法で共有


線形転送効果

線形転送効果を使用して、各チャネルに指定した値のリストから作成された線形関数を使用して、画像の色の強度をマップします。

この効果の CLSID がCLSID_D2D1LinearTransfer。

画像の例

変更前
効果の前の画像。
クリック後
変換後のイメージ。
ComPtr<ID2D1Effect> linearTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LinearTransfer, &linearTransferEffect);

linearTransferEffect->SetInput(0, bitmap);

linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_SLOPE, 2.5f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE, 5.0f);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(linearTransferEffect.Get());
m_d2dContext->EndDraw();

線形伝達関数は、指定した各チャネルの傾きと y 切片に基づいて作成されます。 出力ピクセル強度 C は、C' = mC + B の式で計算されます。ここで、m は線形関数の傾き、B は線形関数の Y インターセプトです。

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

効果のプロパティ

注意

線形転送プロパティのすべてのチャネルの場合:

  • Y インターセプトは境界付けされず、ユニットレスです。
  • 勾配は境界なしで、単位なしです。
表示名とインデックス列挙 型と既定値 説明
RedYIntercept
D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT
FLOAT
0.0f
Red チャネルの線形関数の Y インターセプト。
RedSlope
D2D1_LINEARTRANSFER_PROP_RED_SLOPE
FLOAT
1.0f
赤チャネルの線形関数の傾き。
RedDisable
D2D1_LINEARTRANSFER_PROP_RED_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果は赤チャネルに伝達関数を適用しません。 これを FALSE に設定すると、RedLinearTransfer 関数が Red チャネルに適用されます。
GreenYIntercept
D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT
FLOAT
0.0f
緑チャネルの線形関数の Y インターセプト。
GreenSlope
D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE
FLOAT
1.0f
緑チャネルの線形関数の傾き。
GreenDisable
D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果は伝達関数を Green チャネルに適用しません。 これを FALSE に設定すると、GreenLinearTransfer 関数が Green チャネルに適用されます。
BlueYIntercept
D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT
FLOAT
0.0f
Blue チャネルの線形関数の Y インターセプト。
BlueSlope
D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE
FLOAT
1.0f
青チャネルの線形関数の傾き。
BlueDisable
D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果は転送関数を Blue チャネルに適用しません。 これを FALSE に設定すると、BlueLinearTransfer 関数が Blue チャネルに適用されます。
AlphaYIntercept
D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT
FLOAT
0.0f
アルファ チャネルの線形関数の Y インターセプト。
AlphaSlope
D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE
FLOAT
0.0f
アルファ チャネルの線形関数の傾き。
AlphaDisable
D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果はアルファ チャネルに伝達関数を適用しません。 これを FALSE に設定すると、AlphaLinearTransfer 関数が Alpha チャネルに適用されます。
ClampOutput
D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT
BOOL
FALSE
効果がグラフの次の効果に値を渡す前に、効果が色の値を 0 から 1 の間にクランプするかどうか。 効果は、アルファ をプリ乗算する前に値をクランプします。
これを TRUE に設定すると、効果によって値がクランプされます。 これを FALSE に設定した場合、効果は色の値をクランプしませんが、他の効果と出力サーフェスの値が十分に高い精度でない場合は、値がクランプされる可能性があります。

要件

要件
サポートされている最小のクライアント Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
サポートされている最小のサーバー Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
Header d2d1effects.h
ライブラリ d2d1.lib、dxguid.lib

ID2D1Effect