Freigeben über


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
das Bild vor der Transformation.
Nach
das Bild nach der Transformation.
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.
3D-Tiefenmatrix Wo:
X, Y, Z = Koordinaten der Eingabeprojektionsebene
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. scale3d-Matrix
SkewX(X) Generiert eine Transformationsmatrix, die die Projektionsebene in X-Richtung verzerrt. Zeigt eine Schiefematrix in X-Richtung an.
SkewY(Y) Generiert eine Transformationsmatrix, die die Projektionsebene in Y-Richtung verzerrt. Skewmatrix
Übersetzung(X, Y, Z) Generiert eine Transformationsmatrix, die die Projektionsebene in X-, Y- oder Z-Richtung übersetzt. Übersetzungsmatrix
RotationX(X) Generiert eine Transformationsmatrix, die die Projektionsebene um die X-Achse dreht. Rotieren einer x-Matrix
RotationY(Y) Generiert eine Transformationsmatrix, die die Projektionsebene um die Y-Achse dreht. Rotieren der y-Matrix
RotationZ(Z) Generiert eine Transformationsmatrix, die die Projektionsebene um die Z-Achse dreht. Rotieren der Z-Matrix
PerspectiveProjection(D) Eine perspektivische Transformation mit dem Tiefenwert D. Perspektivische Matrix
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

ID2D1Effect