Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |