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
- vlastnosti efektu
- barevných kanálů
- výstupní rastrový obrázek
- požadavky na
- související témata
Příklad obrázku
Před |
---|
![]() |
Po |
![]() |
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 |