Elmozdítási térkép effektusa
Az elmozdítási leképezési effektussal a bemeneti kép képpontjait a második bemeneti kép intenzitási értékei alapján lehet elmozdítani.
Az effektus CLSID azonosítója CLSID_D2D1DisplacementMap.
Példakép
Előtt |
---|
![]() |
Után |
![]() |
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();
A kimenetben lévő képpontok helyének meghatározása a következő képlettel történik:
C' (x,y)=C(x+ scale*(XChannelSelector(Displacement Bitmap (x,y))-0,5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y))-0.5))
Hol:
-
C (x, y) az (x, y) kimeneti képpont.
C (x, y) az (x, y) bemeneti képpont.
kiszorítási bitkép (x, y) az elmozdítási képpont intenzitása a megadott koordinátákon
XChannelSelector a kiválasztott RGBA-csatorna intenzitását a kiszorítási bittérképről, amely az X irányban elmozdítja a bemeneti képet.
YChannelSelector a kiválasztott RGBA-csatorna intenzitását az Y irányban elmozdító kiszorítási bittérképről.
Az effektus a méretezési tulajdonság és az elmozdítási rendszerkép intenzitása alapján újramintára helyezi a bemeneti lemezképet. Kétvonalas interpolációt használ, ha mintavételezést végez a bemeneti kép képpontjai között.
Ez a hatás egyenes és előre meghatározott alfaképeken működik. A kimeneti alfa formátum megegyezik a bemeneti formátummal.
Effektus tulajdonságai
Név és index számbavételének megjelenítése | Típus és alapértelmezett érték | Leírás |
---|---|---|
Hangsor D2D1_DISPLACEMENTMAP_PROP_SCALE |
LEBEG 0,0f |
Megszorozza a kijelölt csatorna intenzitását az elmozdítási képről. Minél magasabban állítja be ezt a tulajdonságot, annál nagyobb az effektus a képpontok kiszorításával |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Az effektus kinyeri az intenzitást ebből a színcsatornából, és használatával térbelileg elmozdítja a képet az X irányban. További információt a Színcsatornák című témakörben talál. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Az effektus kinyeri az intenzitást ebből a színcsatornából, és használatával térbelileg elmozdítja a képet az Y irányban. További információt a Színcsatornák című témakörben talál. |
Színcsatornák
Felsorolás | Leírás |
---|---|
D2D1_CHANNEL_SELECTOR_R | Az effektus kinyeri a piros csatorna intenzitási kimenetét. |
D2D1_CHANNEL_SELECTOR_G | Az effektus kinyeri az intenzitás kimenetét a zöld csatornából. |
D2D1_CHANNEL_SELECTOR_B | Az effektus kinyeri az intenzitás kimenetét a kék csatornából. |
D2D1_CHANNEL_SELECTOR_A | Az effektus kinyeri az intenzitás kimenetét az alfa csatornából. |
Kimeneti bitkép
A kimeneti bitkép maximális méretét az alábbi egyenletekkel határozhatja meg:
Kimeneti bitkép? Pixels=(Bemeneti bitkép mérete?( DIP-k)+Méretezés)*(Felhasználói DPI/96)
Kimeneti bitképy Pixels=(Bemeneti bitkép méretey(DIP) + Méretezés)*(Felhasználói DPI/96)
Követelmények
Követelmény | Érték |
---|---|
Minimálisan támogatott ügyfél | Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások] |
Minimálisan támogatott kiszolgáló | Windows 8 és Platform Update for Windows 7 [asztali alkalmazások | Windows Áruházbeli alkalmazások] |
Fejléc | d2d1effects.h |
Könyvtár | d2d1.lib, dxguid.lib |