Partager via


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 ?

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.

l’axe x et l’axe y d’un espace de coordonnées gaucher

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é. illustration d’un carré pivoté de 45 degrés dans le sens des aiguilles d’une montre autour du centre du carré d’origine
Mettre à l’échelle 2Didcompositionscaletransform[newline] Mettre à l’échelle un visuel selon le facteur spécifié concernant le point central spécifié. illustration d’un carré mis à l’échelle de 130 pour cent
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é. illustration d’un carré incliné de 30 degrés dans le sens inverse des aiguilles d’une montre à partir de l’axe y
Traduire 2Didcompositiontranslatetransform[newline] modifier la position d’un visuel dans la direction de l’axe X et de l’axe y. illustration d’un carré déplacé de 20 unités le long de l’axe X positif et de 10 unités le long de l’axe y positif

 

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.

DirectComposition Concepts