次の方法で共有


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

ディスプレイスメント マップ効果を使用して、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(ディスプレイスメント ビットマップ (x,y)))-0.5),y+ scale*(YChannelSelector(ディスプレイスメント ビットマップ (x,y)-0.5))

どこ:

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

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

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

Effect プロパティ

表示名とインデックス列挙 型と既定値 形容
規模
D2D1_DISPLACEMENTMAP_PROP_SCALE
浮く
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=(入力ビットマップ サイズ?(DIP)+Scale)*(ユーザー DPI/96)

Output Bitmapy Pixels=(Input Bitmap Sizey(DIP) + Scale)*(User DPI/96)

必要条件

要件 価値
サポートされる最小クライアント Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ]
サポートされている最小サーバー Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ]
ヘッダ d2d1effects.h
図書館 d2d1.lib、dxguid.lib

ID2D1Effect