3D-Perspektivischer Transformationseffekt
Verwenden Sie den 3D-Perspektiv-Transformationseffekt, um das Bild in drei Dimensionen zu drehen, als ob es aus einem Abstand angezeigt wird.
Die 3D-Perspektivische Transformation ist praktischer als der 3D-Transformationseffekt, stellt jedoch nur eine Teilmenge der Funktionalität zur Verfügung. Sie können eine vollständige 3D-Transformationsmatrix berechnen und eine beliebigere Transformationsmatrix auf ein Bild anwenden, indem Sie die 3D-Transformation Effekts verwenden.
Die CLSID für diesen Effekt ist CLSID_D2D13DPerspectiveTransform.
- Beispielbild
- Effekteigenschaften
- Interpolationsmodi
- Rahmenmodi
- Ausgabebitmap-
- Anforderungen
- Verwandte Themen
Beispielbild
Vor |
---|
![]() |
Nach |
![]() |
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 Indexenumeration | Beschreibung |
---|---|
InterpolationMode D2D1_3DPERSPECTIVETRANSFORM_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_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 vom 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 Betrachters in der 3D-Szene. Diese Eigenschaft ist ein 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 dreht. Diese Eigenschaft ist ein 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 ein 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 ein 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 ein 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
Aufzählung | Beschreibung |
---|---|
D2D1_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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_3DPERSPECTIVETRANSFORM_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. |
Ausgabebitmap
Die Größe der Ausgabebitmap hängt von der Transformationsmatrix ab, die auf das Bild angewendet wird.
Der Effekt führt den Transformationsvorgang aus und wendet dann ein umgebendes Feld um das Ergebnis an. Die Ausgabebitmap ist die Größe des umgebenden Felds.
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 |