Verschiebungszuordnungseffekt

Verwenden Sie den Verschiebungszuordnungseffekt, um die Pixel des Eingabebilds durch die Intensitätswerte eines zweiten Eingabebilds zu verdingen.

Die CLSID für diesen Effekt ist CLSID _ D2D1DisplacementMap.

Beispielbild

Vorher
das Bild vor dem Effekt.
Nach
das Bild nach der Transformation.
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+-Skalierung * (XChannelSelector(Bitmap zur Verschiebung (x,y))-0,5), y+ Skala * (YChannelSelector(Verlagerungsbitmap (x,y))-0,5))

Hierbei gilt:

C (x, y) ist das Ausgabepixel bei (x, y).
C (x, y) ist das Eingabepixel bei (x, y).
Bitmap für Verschiebung (x, y) ist die Pixeldichte der Verschiebung an den angegebenen Koordinaten.
XChannelSelector die Intensität des ausgewählten RGBA-Kanals aus der Verschiebungsbitmap, die das Eingabebild in X-Richtung entfernt.
YChannelSelector die Intensität des ausgewählten RGBA-Kanals aus der Verschiebungsbitmap, die das Eingabebild in Y-Richtung entfernt.

Der Effekt resamples das Eingabebild entsprechend der Skalierungseigenschaft und der Intensität des Verschiebungsbilds. Sie verwendet die bilineare Interpolation, wenn die Stichprobenentnahme zwischen Pixeln im Eingabebild erfolgt.

Dieser Effekt funktioniert bei geraden und prämultiplizierten Alphabildern. Das Alphaformat der Ausgabe entspricht dem Eingabeformat.

Effect-Eigenschaften

Anzeigename und Indexenumeration Typ und Standardwert BESCHREIBUNG
Skalieren
D2D1 _ – _ _ PROP-SKALIERUNG DER VERSCHIEBUNGMAP
GLEITKOMMAZAHL
0.0f
Multipliziert die Intensität des ausgewählten Kanals aus dem Verschiebungsbild. Je höher Sie diese Eigenschaft festlegen, desto mehr werden die Pixel durch den Effekt entfernt.
XChannelSelect
D2D1 _ – VERSCHIEBUNGMAP _ PROP X _ CHANNEL _ _ SELECT
_D2D1-KANALSELEKTOR _
_D2D1-KANALAUSWAHL _ _ A
Der Effekt extrahiert die Intensität aus diesem Farbkanal und verwendet sie, um das Bild in X-Richtung räumlich zu verdingen. Weitere Informationen finden Sie unter Farbkanäle.
YChannelSelect
D2D1 _ – _ _ AUSWÄHLEN DES PROP _ Y-KANALS _ FÜR DIE VERSCHIEBUNGMAP
_D2D1-KANALSELEKTOR _
_D2D1-KANALAUSWAHL _ _ A
Der Effekt extrahiert die Intensität aus diesem Farbkanal und verwendet sie, um das Bild in Y-Richtung räumlich zu verdingen. Weitere Informationen finden Sie unter Farbkanäle.

Farbkanäle

Enumeration Beschreibung
_D2D1-KANALAUSWAHL _ _ R Der Effekt extrahiert die Intensitätsausgabe aus dem roten Kanal.
_D2D1-KANALAUSWAHL _ _ G Der Effekt extrahiert die Intensitätsausgabe aus dem grünen Kanal.
_D2D1-KANALAUSWAHL _ _ B Der Effekt extrahiert die Intensitätsausgabe aus dem blauen Kanal.
_D2D1-KANALAUSWAHL _ _ A Der Effekt extrahiert die Intensitätsausgabe aus dem Alphakanal.

Ausgabebitmap

Sie können die maximale Größe der Ausgabebitmap mit den folgenden Gleichungen bestimmen:

Ausgabebitmap? Pixels=(Input Bitmap Size?( DIPs)+Skalierung) * (Benutzer-DPI/96)

Output Bitmap y Pixels=(Input Bitmap Sizey(DIPs) + Scale) (User DPI/96) (Ausgabebitmapy Pixels=(Input Bitmap Size y (DIPs) + Scale) * (Benutzer-DPI/96)

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps]
Unterstützte Mindestversion (Server) Windows 8 und Plattformupdate für Windows 7 [ Desktop-Apps | Windows Store Apps]
Header d2d1effects.h
Bibliothek d2d1.lib, dxguid.lib

ID2D1Effect