ディスプレイスメント マップ効果
ディスプレイスメント マップ効果を使用して、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 |