3D-Transformationseffekt
Verwenden Sie den 3D-Transformationseffekt, um eine beliebige 4x4-Transformationsmatrix auf ein Bild anzuwenden.
Dieser Effekt wendet die Matrix (M?) an, die Sie mit dieser Berechnung auf die Eckvertizes des Quellbilds ([ x y z 1 ]) angeben:
[ xr yr zr 1 ]=[ x y z 1 ]*M?
Die CLSID für diesen Effekt ist CLSID_D2D13DTransform.
Beispielbild
Vor |
---|
![]() |
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 fünf 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 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. |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
Eine 4x4-Transformationsmatrix, die auf die Projektionsebene angewendet wird. Die folgende Matrixberechnung wird verwendet, um Punkte von einem 3D-Koordinatensystem zum transformierten 2D-Koordinatensystem zuzuordnen. ![]()
Mx,y = Transformationsmatrixelemente X , Y , Z =Output-Projektionsebenenkoordinaten Die einzelnen Matrixelemente sind nicht begrenzt und sind einheitslos. Typ ist D2D1_MATRIX_4X4_F. Der Standardwert ist Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1). |
Interpolationsmodi
Aufzählung | Beschreibung |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Gibt den nächstgelegenen einzelnen Punkt an und verwendet dies. Dieser Modus verwendet weniger Verarbeitungszeit, gibt jedoch das bild mit der niedrigsten Qualität aus. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | Verwendet ein Beispiel mit vier Punkten 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 16 Beispiel-Kubikkern 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 vier lineare Beispiele innerhalb eines einzelnen Pixels für eine gute Antialiasierung am Rand. Dieser Modus eignet sich gut für die Skalierung von kleinen Mengen an Bildern mit wenigen Pixeln. |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | Verwendet die anisotrope Filterung, um ein Muster gemäß der transformierten Form der Bitmap zu probieren. |
Anmerkung
Wenn Sie keinen Modus auswählen, wird der Effekt standardmäßig auf D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR festgelegt.
Anmerkung
Der anisotrope Modus generiert jedoch Mipmaps beim Skalieren, wenn Sie die Zwischengespeicherte-Eigenschaft auf "true" für die Effekte festlegen, die für diesen Effekt eingegeben werden, werden die Mipmaps nicht jedes Mal für ausreichend kleine Bilder generiert.
Rahmenmodi
Name | Beschreibung |
---|---|
D2D1_BORDER_MODE_SOFT | Die Effektpads des Bilds werden mit transparenten schwarzen Pixeln interpoliert, was zu einem weichen Rand führt. |
D2D1_BORDER_MODE_HARD | Der Effekt klemmt die Ausgabe an die Größe des Eingabebilds. |
4x4 Transformationsmatrixklasse
Direct2D stellt eine 4x4-Matrixklasse bereit, um Hilfsfunktionen zum Transformieren 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 der X-, Y- und/oder Z-Richtung skaliert. |
![]() |
SkewX(X) | Generiert eine Transformationsmatrix, die die Projektionsebene in X-Richtung schieft. |
![]() |
Schiefe Y(Y) | Generiert eine Transformationsmatrix, die die Projektionsebene in Y-Richtung schieft. |
![]() |
Translation(X, Y, Z) | Generiert eine Transformationsmatrix, die die Projektionsebene in der 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 einem Tiefenwert von D. |
![]() |
RotationArbitraryAxis(X, Y, Z, Grad) | Dreht die Projektionsebene um die von Ihnen angegebene Achse. |
Anforderungen
Anforderung | Wert |
---|---|
Mindestens unterstützter Client | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Mindestens unterstützter Server | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | Windows Store-Apps] |
Kopfball | d2d1effects.h |
Bibliothek | d2d1.lib, dxguid.lib |