Sdílet prostřednictvím


Posunutí efektu mapy

Pomocí efektu posunutí mapy vytěsníte pixely vstupního obrázku hodnotami intenzity druhého vstupního obrázku.

CLSID pro tento efekt je CLSID_D2D1DisplacementMap.

Příklad obrázku

Před
obrázek před efektem.
Po
obrázek po transformaci.
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();

Umístění pixelů ve výstupu se určují pomocí tohoto vzorce:

C' (x,y)=C(x+ měřítko*(XChannelSelector(posun bitmapa (x;y)-0,5);y+ měřítko*(YChannelSelector(Posunutí bitmapy (x;y))-0,5))

Kde:

C (x, y) je výstupní pixel na (x, y).
C (x, y) je vstupní pixel na (x, y).
posunutí rastrového obrázku (x, y) je intenzita posunu pixelů v zadaných souřadnicích.
XChannelSelector intenzitu vybraného kanálu RGBA z rastrového obrázku posunu, který vytěsňuje vstupní obrázek ve směru X.
YChannelSelector intenzitu vybraného kanálu RGBA z rastrového obrázku posunu, který vytěsňuje vstupní obrázek ve směru Y.

Efekt převzorkuje vstupní obrázek podle vlastnosti měřítka a intenzity posunu obrázku. Při vzorkování mezi pixely na vstupním obrázku používá bilineární interpolaci.

Tento efekt funguje na rovných a předsledovaných alfa obrázcích. Výstupní alfa formát je stejný jako vstupní formát.

Vlastnosti efektu

Zobrazovaný název a výčet indexu Typ a výchozí hodnota Popis
Škála
D2D1_DISPLACEMENTMAP_PROP_SCALE
PLOUT
0.0f
Vynásobí intenzitu vybraného kanálu z posunu obrázku. Čím vyšší tuto vlastnost nastavíte, tím více efekt vytěsní pixely.
XChannelSelect
D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
Efekt extrahuje intenzitu z tohoto barevného kanálu a používá ho k prostorovém přemístění obrázku ve směru X. Další informace najdete v tématu Barevné kanály.
YChannelSelect
D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT
D2D1_CHANNEL_SELECTOR
D2D1_CHANNEL_SELECTOR_A
Efekt extrahuje intenzitu z tohoto barevného kanálu a používá ho k prostorově vytěsnit obrázek ve směru Y. Další informace najdete v tématu Barevné kanály.

Barevné kanály

Výčet Popis
D2D1_CHANNEL_SELECTOR_R Efekt extrahuje výstup intenzity z červeného kanálu.
D2D1_CHANNEL_SELECTOR_G Efekt extrahuje výstup intenzity ze zeleného kanálu.
D2D1_CHANNEL_SELECTOR_B Efekt extrahuje výstup intenzity z modrého kanálu.
D2D1_CHANNEL_SELECTOR_A Efekt extrahuje výstup intenzity z alfa kanálu.

Výstupní rastrový obrázek

Maximální velikost výstupního rastrového obrázku můžete určit pomocí těchto rovnic:

Výstupní rastrový obrázek? Pixels=(Velikost vstupního rastrového obrázku?( DIPs)+Scale)*(DPI/96)

Výstupní rastrový obrázeky Pixels=(Velikost vstupního rastruy(DIPs) + Měřítko)*(DPI/96)

Požadavky

Požadavek Hodnota
Minimální podporovaný klient Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store]
Minimální podporovaný server Windows 8 a Aktualizace platformy pro Windows 7 [desktopové aplikace | Aplikace pro Windows Store]
Záhlaví d2d1effects.h
Knihovna d2d1.lib, dxguid.lib

ID2D1Effect