位移圖效果
使用位移對應效果,藉由第二個輸入影像的強度值來取代輸入影像的圖元。
這個效果的 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+ 縮放*(YChannelSelector(位移位圖(x,y))-0.5))
哪裡:
-
C (x, y) 是 (x, y) 的輸出圖元。
C (x, y) 是位於 (x, y) 的輸入圖元。
位移點陣圖 (x, y) 是指定座標的位移圖元強度
XChannelSelector 所選 RGBA 通道的強度,該位移位圖會將輸入影像取代為 X 方向。
YChannelSelector 所選 RGBA 通道的強度,該位移位圖會取代 Y 方向的輸入影像。
效果會根據縮放屬性和位移影像的強度,重新取樣輸入影像。 如果從輸入影像中的像素之間取樣,它會使用雙線性插補。
這個效果適用於直線和預乘Alpha影像。 輸出 Alpha 格式與輸入格式相同。
效果屬性
顯示名稱和索引列舉 | 類型和預設值 | 描述 |
---|---|---|
規模 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 | 效果會從 Alpha 色板擷取強度輸出。 |
輸出點陣圖
您可以使用下列方程式來判斷輸出點陣圖的大小上限:
輸出點陣圖? Pixels=(輸入位圖大小?(DIP)+縮放比例*(使用者 DPI/96)
輸出點陣圖y 圖元=(輸入點陣圖大小y(DIP) + 縮放比例)*(使用者 DPI/96)
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
頁眉 | d2d1effects.h |
圖書館 | d2d1.lib、dxguid.lib |