Transformations (DirectComposition)
Notes
Pour les applications sur Windows 10, nous vous recommandons d’utiliser les API Windows.UI.Composition au lieu de DirectComposition. Pour plus d’informations, consultez Moderniser votre application de bureau à l’aide de la couche visuelle.
Cette rubrique décrit la prise en charge de Microsoft DirectComposition pour les transformations d’affine (linéaire) en deux dimensions (2D) et décrit les types de transformations prises en charge par DirectComposition.
DirectComposition prend également en charge les transformations de perspective 3D, mais comme elles nécessitent la création d’une bitmap intermédiaire, DirectComposition les considère comme des effets plutôt que des transformations. Pour plus d’informations sur les effets de transformation de perspective 3D, consultez Effets.
Cette rubrique contient les sections suivantes :
- Qu’est-ce qu’une transformation 2D DirectComposition ?
- Espace de coordonnées 2D DirectComposition
- Prise en charge des transformations affine 2D
- Transformations 2D de matrice
- Transformer des groupes
- Animation de transformation
- Rubriques connexes
Qu’est-ce qu’une transformation 2D DirectComposition ?
Une transformation 2D vous permet de modifier la position, la taille ou la nature d’un visuel dans deux dimensions en le déplaçant vers un autre emplacement (traduction), en le rendant plus grand ou plus petit (mise à l’échelle), en le tournant (rotation) ou en déformant sa forme (inclinaison).
Une transformation 2D est obtenue en mappant les points d’un visuel d’une position à une autre dans le même espace de coordonnées, ou d’un espace de coordonnées à un autre. Ce mappage est décrit par une table de valeurs appelée matrice de transformation, définie comme une collection de trois lignes avec trois colonnes de valeurs à virgule flottante, comme indiqué dans le tableau suivant.
M11Default : 1.0
M21Default : 0,0
M31OffsetX : 0,0
M12Default : 0,0
M22Default : 1.0
M32OffsetY : 0,0
0,0
0,0
1.0
La matrice de transformation pour les transformations affine 2D est une matrice 3 par 2 qui omet la troisième colonne de la matrice de transformation précédente. Le tableau suivant montre la disposition de cette matrice.
M11Default : 1.0
M21Default : 0,0
M31OffsetX : 0,0
M12Default : 0,0
M22Default : 1.0
M32OffsetY : 0,0
Notes
DirectComposition n’effectue aucun traitement spécial lors de l’application de transformations 2D au contenu stéréo. Cela signifie que le contenu 3D peut apparaître déformé lorsqu’une transformation 2D lui est appliquée.
Espace de coordonnées 2D DirectComposition
DirectComposition utilise un espace de coordonnées 2D gaucher ; autrement dit, les valeurs positives de l’axe X augmentent à droite et les valeurs positives de l’axe Y augmentent vers le bas. Les visuels sont positionnés par rapport à l’origine, qui est le point où l’axe X et l’axe y se croisent (0, 0), comme illustré dans l’illustration suivante.
En manipulant des valeurs dans une matrice de transformation 3 par 2, vous pouvez faire pivoter, mettre à l’échelle, asymétrie et traduire un objet en deux dimensions. Par exemple, si vous définissez OffsetX sur 100 et OffsetY sur 200, vous déplacez l’objet vers la droite de 100 pixels et vers le bas de 200 pixels.
Prise en charge des transformations affine 2D
Le tableau suivant décrit les types de transformations affine 2D prises en charge par DirectComposition et répertorie les interfaces que vous pouvez utiliser pour effectuer les différents types de transformations.
Transformation/interface | Description | Illustration |
---|---|---|
Faire pivoter 2Didcompositionrotatetransform[newline] | faire pivoter un visuel selon l’angle spécifié par rapport au point central spécifié. | ![]() |
Mettre à l’échelle 2Didcompositionscaletransform[newline] | Mettre à l’échelle un visuel selon le facteur spécifié concernant le point central spécifié. | ![]() |
Skew 2Didcompositionskewtransform[newline] | Faire pivoter un visuel selon l’angle spécifié le long de l’axe X et de l’axe Y, et autour du point central spécifié. | ![]() |
Traduire 2Didcompositiontranslatetransform[newline] | modifier la position d’un visuel dans la direction de l’axe X et de l’axe y. | ![]() |
Transformations 2D de matrice
L’interface IDCompositionMatrixTransform vous permet de définir votre propre matrice de transformation affine 2D 3 par 2 et de l’appliquer à un visuel. Cette interface est utile si vous devez appliquer un type de transformation affine 2D qui n’est pas disponible via les autres interfaces de transformation DirectComposition. Vous définissez la matrice en remplissant une structure D2D_MATRIX_3X2_F et en la transmettant à la méthode IDCompositionMatrixTransform::SetMatrix .
Transformer des groupes
Vous pouvez utiliser des groupes de transformations pour combiner plusieurs transformations en une seule. Un groupe de transformations définit une collection d’objets de transformation dont les matrices sont multipliées ensemble dans l’ordre dans lequel elles sont spécifiées dans la collection. La matrice de transformation résultante est ensuite appliquée au visuel. Un groupe de transformations produit le même résultat que l’application de chaque transformation séparément.
Gardez à l’esprit que l’ordre des objets de transformation dans un groupe de transformations est important. Par exemple, si un visuel est d’abord pivoté, puis mis à l’échelle, puis traduit, le résultat est différent de celui si le visuel est d’abord traduit, puis pivoté, puis mis à l’échelle. DirectComposition applique toujours les transformations à un visuel dans l’ordre dans lequel elles sont spécifiées dans la collection.
Pour créer un groupe de transformations, commencez par créer les objets de transformation que vous souhaitez inclure dans le groupe, puis passez un tableau de pointeurs d’objet de transformation à la méthode IDCompositionDevice::CreateTransformGroup . Après avoir créé un groupe de transformations, vous ne pouvez pas ajouter ou supprimer d’objets de transformation. Toutefois, vous pouvez modifier les propriétés des objets de transformation individuels dans la collection, et les modifications seront répercutées dans la matrice de transformation résultante.
Animation de transformation
Les propriétés d’une transformation peuvent être animées. Lorsqu’une propriété est animée, DirectComposition modifie la valeur de la propriété au fil du temps, plutôt que tout à la fois. Cela est particulièrement utile lors de la création de transitions. Pour plus d’informations, consultez Animation.
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour