Transformationen (DirectComposition)
Hinweis
Für Apps auf Windows 10 wird die Verwendung von Windows.UI.Composition-APIs anstelle von DirectComposition empfohlen. Weitere Informationen finden Sie unter Modernisieren Ihrer Desktop-App mithilfe der visuellen Ebene.
In diesem Thema wird die Microsoft DirectComposition-Unterstützung für zweidimensionale (2D) affine (lineare) Transformationen erläutert und die Typen von Transformationen beschrieben, die Von DirectComposition unterstützt werden.
DirectComposition unterstützt auch 3D-Perspektivtransformationen, da sie jedoch die Erstellung einer zwischengeschalteten Bitmap erfordern, betrachtet DirectComposition sie als Effekte und nicht als Transformationen. Informationen zu 3D-Perspektivtransformationseffekten finden Sie unter Effekte.
Dieses Thema enthält die folgenden Abschnitte:
- Was ist eine DirectComposition 2D-Transformation?
- Der DirectComposition-2D-Koordinatenraum
- Unterstützung für affine 2D-Transformationen
- Matrix-2D-Transformationen
- Transformieren von Gruppen
- Animation transformieren
- Zugehörige Themen
Was ist eine DirectComposition 2D-Transformation?
Mit einer 2D-Transformation können Sie die Position, Größe oder Natur eines Visuals in zwei Dimensionen ändern, indem Sie das Visual an eine andere Stelle verschieben (Übersetzung), es größer oder kleiner macht (Skalieren), es drehen (Drehung) oder seine Form verzerrt (Skewing).
Eine 2D-Transformation wird erreicht, indem die Punkte eines Visuals von einer Position zu einer anderen innerhalb desselben Koordinatenraums oder von einem Koordinatenraum zu einem anderen zugeordnet werden. Diese Zuordnung wird durch eine Tabelle mit Werten beschrieben, die als Transformationsmatrix bezeichnet wird, die als Auflistung von drei Zeilen mit drei Spalten mit Gleitkommawerten definiert ist, wie in der folgenden Tabelle dargestellt.
M11Default: 1.0
M21Default: 0,0
M31OffsetX: 0.0
M12Default: 0.0
M22Default: 1.0
M32OffsetY: 0,0
0.0
0.0
1.0
Die Transformationsmatrix für affine 2D-Transformationen ist eine 3-mal-2-Matrix, die die dritte Spalte von der vorherigen Transformationsmatrix weglässt. Die folgende Tabelle zeigt das Layout dieser Matrix.
M11Default: 1.0
M21Default: 0,0
M31OffsetX: 0.0
M12Default: 0.0
M22Default: 1.0
M32OffsetY: 0,0
Hinweis
DirectComposition führt keine spezielle Verarbeitung durch, wenn 2D-Transformationen auf Stereoinhalte angewendet werden. Dies bedeutet, dass der 3D-Inhalt möglicherweise verzerrt erscheint, wenn eine 2D-Transformation darauf angewendet wird.
Der DirectComposition-2D-Koordinatenraum
DirectComposition verwendet einen linkshändigen 2D-Koordinatenraum; Das heißt, positive x-Achsenwerte erhöhen sich nach rechts und positive y-Achsenwerte nach unten. Visuals werden relativ zum Ursprung positioniert, d. h. dem Punkt, an dem sich die x- und y-Achse überschneiden (0, 0), wie in der folgenden Abbildung gezeigt.
Durch Bearbeiten von Werten in einer 3-by-2-Transformationsmatrix können Sie ein Objekt in zwei Dimensionen rotieren, skalieren, verkleinen und übersetzen. Wenn Sie beispielsweise OffsetX auf 100 und OffsetY auf 200 festlegen, verschieben Sie das Objekt auf die rechten 100 Pixel und nach unten um 200 Pixel.
Unterstützung für affine 2D-Transformationen
Die folgende Tabelle beschreibt die Typen von affinen 2D-Transformationen, die von DirectComposition unterstützt werden, und listet die Schnittstellen auf, die Sie zum Ausführen der verschiedenen Transformationstypen verwenden können.
Transformieren/Schnittstelle | BESCHREIBUNG | Abbildung |
---|---|---|
Rotieren von 2Didcompositionrotatetransform[newline] | Drehen Sie ein Visual um den angegebenen Winkel um den angegebenen Mittelpunkt. | |
Skalieren von 2Didcompositionscaletransform[newline] | skalieren Sie ein Visual um den angegebenen Faktor für den angegebenen Mittelpunkt. | |
Skew 2Didcompositionskewtransform[newline] | ein Visual um den angegebenen Winkel entlang der x- und y-Achse und um den angegebenen Mittelpunkt zu verzerren. | |
Übersetzen von 2Didcompositiontranslatetransform[newline] | ändern Sie die Position eines Visuals in Richtung der x- und y-Achse. |
Matrix-2D-Transformationen
Mit der IDCompositionMatrixTransform-Schnittstelle können Sie Ihre eigene 3-by-2 affine 2D-Transformationsmatrix definieren und auf ein Visual anwenden. Diese Schnittstelle ist nützlich, wenn Sie einen Typ von affiner 2D-Transformation anwenden müssen, der nicht über die anderen DirectComposition-Transformationsschnittstellen verfügbar ist. Sie definieren die Matrix, indem Sie eine D2D_MATRIX_3X2_F Struktur füllen und an die IDCompositionMatrixTransform::SetMatrix-Methode übergeben.
Transformieren von Gruppen
Sie können Transformationsgruppen verwenden, um mehrere Transformationen in einer zu kombinieren. Eine Transformationsgruppe definiert eine Auflistung von Transformationsobjekten, deren Matrizen in der Reihenfolge multipliziert werden, in der sie in der Auflistung angegeben werden. Die resultierende Transformationsmatrix wird dann auf das Visual angewendet. Eine Transformationsgruppe erzeugt das gleiche Ergebnis wie das separate Anwenden jeder Transformation.
Beachten Sie, dass die Reihenfolge der Transformationsobjekte in einer Transformationsgruppe wichtig ist. Wenn ein Visual beispielsweise zuerst gedreht, dann skaliert und dann übersetzt wird, unterscheidet sich das Ergebnis von dem, wenn das Visual zuerst übersetzt, dann gedreht und dann skaliert wird. DirectComposition wendet die Transformationen immer in der Reihenfolge an, in der sie in der Auflistung angegeben werden.
Um eine Transformationsgruppe zu erstellen, erstellen Sie zuerst die Transformationsobjekte, die Sie in die Gruppe einschließen möchten, und übergeben Sie dann ein Array von Transformationsobjektzeigern an die IDCompositionDevice::CreateTransformGroup-Methode . Nachdem Sie eine Transformationsgruppe erstellt haben, können Sie keine Transformationsobjekte hinzufügen oder entfernen. Sie können jedoch die Eigenschaften der einzelnen Transformationsobjekte in der Auflistung ändern, und die Änderungen werden in der resultierenden Transformationsmatrix widerspiegelt.
Animation transformieren
Die Eigenschaften einer Transformation können animiert werden. Wenn eine Eigenschaft animiert wird, ändert DirectComposition den Wert der Eigenschaft im Laufe der Zeit und nicht alle gleichzeitig. Dies ist besonders nützlich beim Erstellen von Übergängen. Weitere Informationen finden Sie unter Animation.
Zugehörige Themen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für