次の方法で共有


ディスプレイスメント マップ効果

ディスプレイスメント マップ効果を使用して、2 番目の入力画像の強度値によって入力イメージのピクセルを変位させます。

この効果の CLSID はCLSID_D2D1DisplacementMap。

画像の例

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

displacementMapEffect->SetInput(0, bitmap);
displacementMapEffect->SetValue(D2D1_DISPLACEMENTMAP_PROP_SCALE, 100.0f);

// The second input of the displacement effect determines how the input image is transformed.
// For this example, we will use a turbulence effect as the second input to randomly distort the image.
ComPtr<ID2D1Effect> turbulenceEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Turbulence, &turbulenceEffect);
displacementMapEffect->SetInputEffect(1, turbulenceEffect.Get());

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

出力内のピクセルの位置は、次の式を使用して決定されます。

C' (x,y)=C(x+ scale*(XChannelSelector(Displacement Bitmap (x,y)))-0.5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y)))-0.5))

この場合、

C (x, y) は、 (x, y) の出力ピクセルです。
C (x, y) は、(x, y) の入力ピクセルです。
ディスプレイスメント ビットマップ (x,y) は、 指定した座標でのディスプレイスメント ピクセルの強度です
XChannel入力 イメージを X 方向に変位させるディスプレイスメント ビットマップから選択した RGBA チャネルの強度を選択します。
YChannel入力 イメージを Y 方向に変位させるディスプレイスメント ビットマップから選択した RGBA チャネルの強度を選択します。

効果は、スケール プロパティとディスプレイスメント イメージの強度に従って入力イメージを再サンプリングします。 入力画像のピクセル間からサンプリングする場合は、二次補間を使用します。

この効果は、直線的で事前に乗算されたアルファ画像に対して機能します。 出力アルファ形式は入力形式と同じです。

効果のプロパティ

表示名とインデックス列挙 型と既定値 [説明]
スケール
D2D1_DISPLACEMENTMAP_PROP_SCALE
FLOAT
0.0f
ディスプレイスメント イメージから選択したチャネルの強度を乗算します。 このプロパティを設定する値が大きいほど、ピクセルのずれが大きくなります。
XChannelSelect
D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
この効果は、このカラー チャネルから強度を抽出し、それを使用して X 方向に画像を空間的に変位させます。 詳細については、「 カラー チャネル 」を参照してください。
YChannelSelect
D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
この効果は、このカラー チャネルから強度を抽出し、それを使用して Y 方向の画像を空間的に変位させます。 詳細については、「 カラー チャネル 」を参照してください。

カラー チャネル

列挙 説明
D2D1_CHANNEL_SELECTOR_R この効果は、赤チャネルから強度出力を抽出します。
D2D1_CHANNEL_SELECTOR_G この効果は、緑色のチャネルから強度出力を抽出します。
D2D1_CHANNEL_SELECTOR_B この効果は、青チャネルから強度出力を抽出します。
D2D1_CHANNEL_SELECTOR_A この効果は、アルファ チャネルから強度出力を抽出します。

出力ビットマップ

次の式を使用して、出力ビットマップの最大サイズを決定できます。

出力ビットマップ Pixels=(Input Bitmap Size?(DIP)+スケール)*(ユーザー DPI/96)

出力ビットマップy ピクセル=(入力ビットマップ サイズy(DIP) + Scale)*(ユーザー DPI/96)

要件

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

ID2D1Effect