Freigeben über


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
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+ 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

ID2D1Effect-