Verdrängungszuordnungseffekt
Verwenden Sie den Verdrängungszuordnungseffekt, um die Pixel des Eingabebilds durch die Intensitätswerte eines zweiten Eingabebilds zu verschieben.
Die CLSID für diesen Effekt ist CLSID_D2D1DisplacementMap.
Beispielbild
Vor |
---|
![]() |
Nach |
![]() |
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();
Die Positionen der Pixel in der Ausgabe werden mithilfe dieser Formel bestimmt:
C' (x,y)=C(x+ scale*(XChannelSelector(Displacement Bitmap (x,y))-0.5),y+ scale*(YChannelSelector(Displacement Bitmap (x,y))-0,5))
Wo:
-
C (x, y) ist das Ausgabepixel bei (x, y).
C (x, y) ist das Eingabepixel bei (x, y).
Verdrängungsbitmap (x, y) ist die Verschiebungspixelintensität an den angegebenen Koordinaten.
XChannelSelector die Intensität des ausgewählten RGBA-Kanals aus der Verschiebungsbitmap, die das Eingabebild in die X-Richtung verschiebt.
YChannelSelector die Intensität des ausgewählten RGBA-Kanals aus der Verschiebungsbitmap, die das Eingabebild in Y-Richtung verschiebt.
Der Effekt ändert das Eingabebild entsprechend der Skalierungseigenschaft und der Intensität des Verschiebungsbilds. Es verwendet bilineare Interpolation, wenn sampling von zwischen Pixeln im Eingabebild.
Dieser Effekt funktioniert auf geraden und prämultiplizierten Alphabildern. Das Alphaformat der Ausgabe ist identisch mit dem Eingabeformat.
Effekteigenschaften
Anzeigename und Indexenumeration | Typ und Standardwert | Beschreibung |
---|---|---|
Maßstab D2D1_DISPLACEMENTMAP_PROP_SCALE |
SCHWEBEN 0.0f |
Multipliziert die Intensität des ausgewählten Kanals aus dem Verschiebungsbild. Je höher Sie diese Eigenschaft festlegen, desto mehr verschiebt der Effekt die Pixel. |
XChannelSelect D2D1_DISPLACEMENTMAP_PROP_X_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Der Effekt extrahiert die Intensität aus diesem Farbkanal und verwendet ihn, um das Bild in die X-Richtung zu verdrängen. Weitere Informationen finden Sie unter Farbkanäle. |
YChannelSelect D2D1_DISPLACEMENTMAP_PROP_Y_CHANNEL_SELECT |
D2D1_CHANNEL_SELECTOR D2D1_CHANNEL_SELECTOR_A |
Der Effekt extrahiert die Intensität aus diesem Farbkanal und verwendet ihn, um das Bild in die Y-Richtung zu verdrängen. Weitere Informationen finden Sie unter Farbkanäle. |
Farbkanäle
Aufzählung | Beschreibung |
---|---|
D2D1_CHANNEL_SELECTOR_R | Der Effekt extrahiert die Intensitätsausgabe aus dem roten Kanal. |
D2D1_CHANNEL_SELECTOR_G | Der Effekt extrahiert die Intensitätsausgabe aus dem grünen Kanal. |
D2D1_CHANNEL_SELECTOR_B | Der Effekt extrahiert die Intensitätsausgabe aus dem blauen Kanal. |
D2D1_CHANNEL_SELECTOR_A | Der Effekt extrahiert die Intensitätsausgabe aus dem Alphakanal. |
Ausgabebitmap
Sie können die maximale Größe der Ausgabebitmap mit den folgenden Formeln bestimmen:
Ausgabebitmap? Pixels=(Input Bitmap Size?( DIPs)+Scale)*(Benutzer-DPI/96)
Output Bitmapy Pixels=(Input Bitmap Sizey(DIPs) + Scale)*(Benutzer-DPI/96)
Anforderungen
Anforderung | Wert |
---|---|
Mindestens unterstützter Client | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Mindestens unterstützter Server | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Kopfball | d2d1effects.h |
Bibliothek | d2d1.lib, dxguid.lib |