Perspektivischer 3D-Transformationseffekt

Verwenden Sie den 3D-Perspektivtransformationseffekt, um das Bild in drei Dimensionen zu rotieren, als ob es aus der Entfernung betrachtet wird.

Die 3D-Perspektivtransformation ist bequemer als der 3D-Transformationseffekt, macht aber nur einen Teil der Funktionalität verfügbar. Sie können eine vollständige 3D-Transformationsmatrix berechnen und mithilfe des 3D-Transformationseffekts eine beliebigere Transformationsmatrix auf ein Bild anwenden.

Die CLSID für diesen Effekt ist CLSID_D2D13DPerspectiveTransform.

Beispielbild

Vorher
das Bild vor dem Effekt.
Nach
das Bild nach dem Effekt.
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);

perspectiveTransformEffect->SetInput(0, bitmap);

perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(perspectiveTransformEffect.Get());
m_d2dContext->EndDraw();

Effekteigenschaften

Anzeigename und Indexaufzählung BESCHREIBUNG
Interpolationmode
D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE
Der Interpolationsmodus, den der Effekt auf das Bild verwendet. Es gibt 5 Skalierungsmodi, die in Qualität und Geschwindigkeit liegen.
Typ ist D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE.
Der Standardwert ist D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE
Der Modus, der zum Berechnen des Rahmens des Bilds verwendet wird, weich oder hart. Weitere Informationen finden Sie unter Rahmenmodi .
Typ ist D2D1_BORDER_MODE.
Der Standardwert ist D2D1_BORDER_MODE_SOFT.
Tiefe
D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH
Der Abstand von PerspectiveOrigin zur Projektionsebene. Der in DIPs angegebene Wert muss größer als 0 sein.
Typ ist FLOAT.
Der Standardwert ist 1000.0f.
PerspectiveOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN
Die X- und Y-Position des Viewers in der 3D-Szene. Diese Eigenschaft ist eine D2D1_VECTOR_2F definiert als: (Punkt X, Punkt Y). Die Einheiten befinden sich in DIPs.
Sie legen den Z-Wert mit der Depth-Eigenschaft fest.
Typ ist D2D1_VECTOR_2F.
Der Standardwert ist {0.0f, 0.0f}.
LocalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET
Eine Übersetzung, die der Effekt ausführt, bevor er die Projektionsebene rotiert. Diese Eigenschaft ist eine D2D1_VECTOR_3F definiert als: (X, Y, Z). Die Einheiten befinden sich in DIPs.
Typ ist D2D1_VECTOR_3F.
Der Standardwert ist {0.0f, 0.0f, 0.0f}.
GlobalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET
Eine Übersetzung, die der Effekt ausführt, nachdem er die Projektionsebene gedreht hat. Diese Eigenschaft ist eine D2D1_VECTOR_3F definiert als: (X, Y, Z). Die Einheiten befinden sich in DIPs.
Typ ist D2D1_VECTOR_3F.
Der Standardwert ist {0.0f, 0.0f, 0.0f}.
RotationOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN
Der Mittelpunkt der Drehung, die der Effekt ausführt. Diese Eigenschaft ist eine D2D1_VECTOR_3F definiert als: (X, Y, Z). Die Einheiten befinden sich in DIPs.
Typ ist D2D1_VECTOR_3F.
Der Standardwert ist {0.0f, 0.0f, 0.0f}.
Drehung
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION
Die Drehwinkel für jede Achse. Diese Eigenschaft ist eine D2D1_VECTOR_3F definiert als: (X, Y, Z). Die Einheiten sind in Grad.
Typ ist D2D1_VECTOR_3F.
Der Standardwert ist {0.0f, 0.0f, 0.0f}.

Interpolationsmodi

Enumeration Beschreibung
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR Beispiel für den nächsten einzelen Punkt und verwendet diesen. Dieser Modus verbraucht weniger Verarbeitungszeit, gibt jedoch das Bild mit der niedrigsten Qualität aus.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR Verwendet ein Vierpunktbeispiel und eine lineare Interpolation. Dieser Modus verwendet mehr Verarbeitungszeit als der nächste Nachbarmodus, gibt jedoch ein Bild mit höherer Qualität aus.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC Verwendet einen Kubikkern mit 16 Beispielen für die Interpolation. Dieser Modus verwendet die meiste Verarbeitungszeit, gibt jedoch ein Bild mit höherer Qualität aus.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR Verwendet 4 lineare Beispiele in einem einzelnen Pixel für eine gute Edge-Antialiasierung. Dieser Modus eignet sich gut für das Herunterskalieren von kleinen Mengen auf Bildern mit wenigen Pixeln.
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC Verwendet anisotrope Filterung, um ein Muster entsprechend der transformierten Form der Bitmap zu samplen.

Hinweis

Wenn Sie keinen Modus auswählen, wird der Effekt standardmäßig auf D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR.

Hinweis

Der anisotrope Modus generiert Mipmaps beim Skalieren. Wenn Sie jedoch die Cached-Eigenschaft auf true für die Effekte festlegen, die zu diesem Effekt eingegeben werden, werden die Mipmaps nicht jedes Mal für ausreichend kleine Bilder generiert.

Rahmenmodi

Name BESCHREIBUNG
D2D1_BORDER_MODE_SOFT Der Effekt polstert das Bild mit transparenten schwarzen Pixeln, während es interpoliert, was zu einem weichen Rand führt.
D2D1_BORDER_MODE_HARD Der Effekt klemmt die Ausgabe an die Größe des Eingabebilds.

Ausgabe-Bitmap

Die Größe der Ausgabe-Bitmap hängt von der Transformationsmatrix ab, die auf das Bild angewendet wird.

Der Effekt führt den Transformationsvorgang aus und wendet dann ein begrenzungsendes Feld um das Ergebnis an. Die Ausgabebitbitbit entspricht der Größe des begrenzungsenden Felds.

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