次の方法で共有


離散転送効果

不連続転送効果を使用して、指定した値の一覧から作成されたステップ転送関数を使用して、画像の色の強度をマップします。

この効果の CLSID はCLSID_D2D1DiscreteTransfer。

画像の例

ここでの画像は、離散転送効果の入力と出力を示しています。

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

discreteTransferEffect->SetInput(0, bitmap);

float table[3] = {0.0f, 0.5f, 1.0f};
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_RED_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE, table);

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

伝達関数は、入力の一覧 (V=(V0,V1,V2,V3,V? ,V? ,V N) に基づいています。ここで、N は要素の数 - 1 です。

入力ピクセルの強度は C として表されます。出力ピクセルの強度 C は、次の式で計算されます。

値 C の場合は、次のように値 k を選択します。

プロセスの数式。

出力 C は、次の式を使用して計算できます: C' = V?

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

入力が の場合、離散転送関数の [0.25, 0.5, 0.75, 1.0]グラフは次のようになります。

離散伝達関数のピクセル強度グラフ。

効果のプロパティ

Note

離散転送プロパティのすべてのチャネルの値はユニットレスであり、最小 0.0 と最大 1.0 です。

表示名とインデックス列挙 型と既定値 説明
RedTable
D2D1_DISCRETETRANSFER_PROP_RED_TABLE
FLOAT[]
{0.0f, 1.0f}
Red チャネルの転送関数を定義するために使用される値の一覧。
RedDisable
D2D1_DISCRETETRANSFER_PROP_RED_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果は赤チャネルに伝達関数を適用しません。 これを FALSE に設定すると、RedDiscreteTransfer 関数が Red チャネルに適用されます。
GreenTable
D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
Green チャネルの転送関数を定義する値の一覧。
GreenDisable
D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果は伝達関数を Green チャネルに適用しません。 これを FALSE に設定すると、GreenDiscreteTransfer 関数が Green チャネルに適用されます。
BlueTable
D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{0.0f, 1.0f}
Blue チャネルの転送関数を定義する値の一覧。
BlueDisable
D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果は転送関数を Blue チャネルに適用しません。 これを FALSE に設定すると、BlueDiscreteTransfer 関数が Blue チャネルに適用されます。
AlphaTable
D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
アルファ チャネルの転送関数を定義する値の一覧。
AlphaDisable
D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE
BOOL
FALSE
これを TRUE に設定した場合、効果はアルファ チャネルに伝達関数を適用しません。 これを FALSE に設定すると、効果によって AlphaDiscreteTransfer 関数が Alpha チャネルに適用されます。
ClampOutput
D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT
BOOL
FALSE
効果がグラフの次の効果に値を渡す前に、効果が色の値を 0 から 1 の間にクランプするかどうか。 効果は、アルファをプリ乗算する前に値をクランプします。
これを TRUE に設定すると、効果によって値がクランプされます。 これを FALSE に設定した場合、効果は色の値をクランプしませんが、他の効果と出力サーフェスの値が十分に高い精度でない場合は、値がクランプされる可能性があります。

要件

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

ID2D1Effect