Verplaatsingskaarteffect
Gebruik het verplaatsingskaarteffect om de pixels van de invoerafbeelding te verplaatsen door de intensiteitswaarden van een tweede invoerafbeelding.
De CLSID voor dit effect is CLSID_D2D1DisplacementMap.
- voorbeeldafbeelding
- eigenschappen van effect
- kleurkanalen
- uitvoer bitmap
- vereisten
- Verwante onderwerpen
Voorbeeldafbeelding
Voor |
---|
![]() |
Na |
![]() |
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();
De locaties van de pixels in de uitvoer worden bepaald met behulp van deze formule:
C' (x,y)=C(x+ schaal*(XChannelSelector(Verplaatsings bitmap (x,y))-0,5),y+ schaal*(YChannelSelector(Verplaatsings bitmap (x,y))-0,5))
Waar:
-
C (x, y) de uitvoer pixel is bij (x, y).
C (x, y) de invoer pixel is bij (x, y).
verplaatsings bitmap (x, y) is de pixelintensiteit van de verplaatsing bij de opgegeven coördinaten
XChannelSelector de intensiteit van het geselecteerde RGBA-kanaal uit de verplaatsings bitmap die de invoerafbeelding in de X-richting verplaatst.
YChannelSelector de intensiteit van het geselecteerde RGBA-kanaal uit de verplaatsings bitmap die de invoerafbeelding in de Y-richting verplaatst.
Het effect herampt de invoerafbeelding op basis van de schaaleigenschap en de intensiteit van de verplaatsingsafbeelding. Er wordt bilineaire interpolatie gebruikt als er steekproeven worden genomen tussen pixels in de invoerafbeelding.
Dit effect werkt op rechte en vooraf samengestelde alfa-afbeeldingen. De alfa-indeling van de uitvoer is hetzelfde als de invoerindeling.
Effecteigenschappen
Weergavenaam en indexenumeratie | Type en standaardwaarde | Beschrijving |
---|---|---|
Schub D2D1_DISPLACEMENTMAP_PROP_SCALE |
DRIJVEN 0,0f |
Vermenigvuldigt de intensiteit van het geselecteerde kanaal op basis van de verplaatsingsafbeelding. Hoe hoger u deze eigenschap instelt, hoe meer het effect de pixels verdovert |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Het effect extraheert de intensiteit van dit kleurkanaal en gebruikt het om de afbeelding ruimtelijk te verplaatsen in de X-richting. Zie Kleurkanalen voor meer informatie. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Het effect extraheert de intensiteit van dit kleurkanaal en gebruikt het om de afbeelding ruimtelijk te verplaatsen in de Y-richting. Zie Kleurkanalen voor meer informatie. |
Kleurkanalen
Opsomming | Beschrijving |
---|---|
D2D1_CHANNEL_SELECTOR_R | Het effect extraheert de intensiteitsuitvoer uit het rode kanaal. |
D2D1_CHANNEL_SELECTOR_G | Het effect extraheert de intensiteitsuitvoer van het groene kanaal. |
D2D1_CHANNEL_SELECTOR_B | Het effect extraheert de intensiteitsuitvoer van het blauwe kanaal. |
D2D1_CHANNEL_SELECTOR_A | Het effect extraheert de intensiteitsuitvoer van het alfakanaal. |
Uitvoer bitmap
U kunt de maximale grootte van de uitvoer bitmap bepalen met deze vergelijkingen:
Uitvoer bitmap? Pixels=(Grootte van invoer bitmap?( DIPs)+Schaal)*(User DPI/96)
Uitvoer bitmapy pixels=(Input Bitmap Sizey(DIPs) + Scale)*(User DPI/96)
Eisen
Eis | Waarde |
---|---|
Minimaal ondersteunde client | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Minimaal ondersteunde server | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Rubriek | d2d1effects.h |
Bibliotheek | d2d1.lib, dxguid.lib |