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