Freigeben über


Verschiebungszuordnungseffekt

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

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 mit 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))

Hierbei gilt:

C (x, y) ist das Ausgabepixel bei (x, y).
C (x, y) ist das Eingabepixel bei (x, y).
Verschiebungsbit (x, y) ist die Pixelintensität der Verschiebung an den angegebenen Koordinaten.
XChannelSelector die Intensität des ausgewählten RGBA-Kanals aus der Verschiebungsbittebit, die das Eingabebild in X-Richtung verdrängt.
YChannelSelector die Intensität des ausgewählten RGBA-Kanals aus der Bitmapverschiebung, die das Eingabebild in Y-Richtung verdrängt.

Der Effekt reampelt das Eingabebild entsprechend der Skalierungseigenschaft und der Intensität des Verschiebungsbilds neu. Es wird eine bilineare Interpolation verwendet, wenn die Stichprobenentnahme zwischen Pixeln im Eingabebild erfolgt.

Dieser Effekt funktioniert bei geraden und vormultiplizierten Alphabildern. Das Ausgabe-Alphaformat ist mit dem Eingabeformat identisch.

Effekteigenschaften

Anzeigename und Indexenumeration Typ und Standardwert BESCHREIBUNG
Skalieren
D2D1_DISPLACEMENTMAP_PROP_SCALE
GLEITKOMMAZAHL
0.0f
Multipliziert die Intensität des ausgewählten Kanals aus dem Verschiebungsbild. Je höher Sie diese Eigenschaft festlegen, desto mehr verdrängt 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 X-Richtung räumlich 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 Y-Richtung räumlich zu verdrängen. Weitere Informationen finden Sie unter Farbkanäle .

Farbkanäle

Enumeration 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.

Ausgabebitbitbit

Sie können die maximale Größe der Ausgabebitbitte mit den folgenden Formeln bestimmen:

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

Ausgabe-Bitmapy Pixels=(Eingabebitbitgrößey(DIPs) + Skalierung)*(Benutzer-DPI/96)

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