Megosztás a következőn keresztül:


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
a képet az effektus előtt.
Után
a képet az átalakítás 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

ID2D1Effect