3D-Transformationseffekt
Verwenden Sie den 3D-Transformationseffekt, um eine beliebige 4x4-Transformationsmatrix auf ein Bild anzuwenden.
Dieser Effekt wendet die Matrix (M?) mit dieser Berechnung auf die Eckpunkte des Quellbilds ([ x y z1 ]) an:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
Die CLSID für diesen Effekt ist CLSID_D2D13DTransform.
Beispielbild
Vorher |
---|
Nach |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Effekteigenschaften
Anzeigename und Indexenumeration | BESCHREIBUNG |
---|---|
Interpolationmode D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
Der Interpolationsmodus, den der Effekt für das Bild verwendet. Es gibt 5 Skalierungsmodi, die in Qualität und Geschwindigkeit reichen. Typ ist D2D1_3DTRANSFORM_INTERPOLATION_MODE. Der Standardwert ist D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR. |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
Der Modus, der verwendet wird, um den Rahmen des Bilds zu berechnen, weich oder hart. Weitere Informationen finden Sie unter Rahmenmodi . Typ ist D2D1_BORDER_MODE. Der Standardwert ist D2D1_BORDER_MODE_SOFT. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Eine 4x4-Transformationsmatrix, die auf die Projektionsebene angewendet wird. Die folgende Matrixberechnung wird verwendet, um Punkte aus einem 3D-Koordinatensystem dem transformierten 2D-Koordinatensystem zuzuordnen. Wo:
Mx,y = Transformieren von Matrixelementen X , Y , Z =Ausgabeprojektionsebenenkoordinaten Die einzelnen Matrixelemente sind nicht begrenzt und einheitslos. Typ ist D2D1_MATRIX_4X4_F. Der Standardwert ist Matrix4x4F(1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1). |
Interpolationsmodi
Enumeration | Beschreibung |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Beispiele für den nächsten einzelnen Punkt und verwenden diesen. Dieser Modus verwendet weniger Verarbeitungszeit, gibt jedoch das Bild mit der niedrigsten Qualität aus. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Verwendet ein Vier-Punkt-Beispiel 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_3DTRANSFORM_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_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | Verwendet 4 lineare Beispiele innerhalb eines einzelnen Pixels für gutes Antialiasing von Kanten. Dieser Modus eignet sich gut für das Herunterskalieren von kleinen Mengen auf Bildern mit wenigen Pixeln. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Verwendet die anisotrope Filterung, um ein Muster entsprechend der transformierten Form der Bitmap zu ermitteln. |
Hinweis
Wenn Sie keinen Modus auswählen, wird der Effekt standardmäßig auf D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR festgelegt.
Hinweis
Der anisotrope Modus generiert bei der Skalierung Mipmaps. Wenn Sie jedoch die Cached-Eigenschaft 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 füllt 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 auf die Größe des Eingabebilds. |
4x4 Transform Matrix-Klasse
Direct2D stellt eine 4x4-Matrixklasse bereit, um Hilfsfunktionen für die Transformation des Bilds in drei Dimensionen bereitzustellen. Weitere Informationen und eine Beschreibung aller Klassenmember finden Sie im Thema Matrix4x4F .
Funktion | BESCHREIBUNG | Matrix |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | Generiert eine Transformationsmatrix, die die Projektionsebene in X-, Y- und/oder Z-Richtung skaliert. | |
SkewX(X) | Generiert eine Transformationsmatrix, die die Projektionsebene in X-Richtung verzerrt. | |
SkewY(Y) | Generiert eine Transformationsmatrix, die die Projektionsebene in Y-Richtung verzerrt. | |
Übersetzung(X, Y, Z) | Generiert eine Transformationsmatrix, die die Projektionsebene in X-, Y- oder Z-Richtung übersetzt. | |
RotationX(X) | Generiert eine Transformationsmatrix, die die Projektionsebene um die X-Achse dreht. | |
RotationY(Y) | Generiert eine Transformationsmatrix, die die Projektionsebene um die Y-Achse dreht. | |
RotationZ(Z) | Generiert eine Transformationsmatrix, die die Projektionsebene um die Z-Achse dreht. | |
PerspectiveProjection(D) | Eine perspektivische Transformation mit dem Tiefenwert D. | |
RotationArbitraryAxis(X, Y, Z, Grad) | Dreht die Projektionsebene um die von Ihnen angegebene Achse. |
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 |