Classe System.Drawing.Drawing2D.Matrix

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

La Matrix classe encapsule une matrice affine de 3 par 3 qui représente une transformation géométrique.

Dans GDI+, vous pouvez stocker une transformation affine dans un Matrix objet. Étant donné que la troisième colonne d’une matrice qui représente une transformation affine est toujours (0, 0, 1), vous spécifiez uniquement les six nombres dans les deux premières colonnes lorsque vous construisez un Matrix objet. L’instruction Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) construit la matrice indiquée dans la figure suivante.

Matrice.

Remarque

Dans .NET 6 et versions ultérieures, le package System.Drawing.Common, qui inclut ce type, n’est pris en charge que sur les systèmes d’exploitation Windows. L’utilisation de ce type dans les applications multiplateformes provoque des avertissements au moment de la compilation et des exceptions d’exécution. Pour plus d’informations, consultez System.Drawing.Common uniquement pris en charge sur Windows.

Transformations composites

Une transformation composite est une séquence de transformations, l’une suivie de l’autre. Considérez les matrices et les transformations dans la liste suivante :

Matrice Transformation
Matrice A Pivoter à 90 degrés
Matrice B Mettre à l’échelle par un facteur de 2 dans la direction x
Matrice C Traduire 3 unités dans la direction y

Si vous commencez par le point (2, 1) - représenté par la matrice [2 1 1] - et multipliez par A, puis B, puis C, le point (2, 1) subira les trois transformations dans l’ordre répertorié.

[2 1 1]ABC = [-2 5 1]

Au lieu de stocker les trois parties de la transformation composite dans trois matrices distinctes, vous pouvez multiplier A, B et C ensemble pour obtenir une matrice 3×3 unique qui stocke toute la transformation composite. Pour ABC = D, Ensuite, un point multiplié par D donne le même résultat qu’un point multiplié par A, puis B, puis C.

[2 1 1]D = [-2 5 1]

L’illustration suivante montre les matrices A, B, C et D.

Matrices A, B, C et D

Le fait que la matrice d’une transformation composite peut être formée en multipliant les matrices de transformation individuelles signifie que toute séquence de transformations affine peut être stockée dans un seul Matrix objet.

Attention

L’ordre d’une transformation composite est important. En général, faire pivoter, puis mettre à l’échelle, puis traduire n’est pas identique à l’échelle, puis faire pivoter, puis traduire. De même, l’ordre de multiplication des matrices est important. En général, ABC n’est pas identique à BAC.

La Matrix classe fournit plusieurs méthodes pour la création d’une transformation composite : Multiply, , RotateRotateAt, Scale, , Shearet Translate. L’exemple suivant crée la matrice d’une transformation composite qui fait d’abord pivoter 30 degrés, puis se met à l’échelle d’un facteur de 2 dans la direction y, puis traduit 5 unités dans la direction x :

Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);
Dim myMatrix As New Matrix()
myMatrix.Rotate(30)
myMatrix.Scale(1, 2, MatrixOrder.Append)
myMatrix.Translate(5, 0, MatrixOrder.Append)