Utilisation de la transformation universelle

La transformation universelle est une propriété de la classe Graphics. Les nombres qui spécifient cette transformation sont stockés dans un objet Matrix qui représente une matrice 3x3. Les classes Matrix et Graphics disposent de plusieurs méthodes pour définir les nombres dans la matrice de transformation universelle.

Types différents de transformations

Dans l'exemple suivant, le code commence par créer un rectangle de 50x50 et le situe à l'origine (0, 0). Celle‑ci occupe le coin supérieur gauche de la zone cliente.

Dim rect As New Rectangle(0, 0, 50, 50)
Dim pen As New Pen(Color.FromArgb(128, 200, 0, 200), 2)
e.Graphics.DrawRectangle(pen, rect)
Rectangle rect = new Rectangle(0, 0, 50, 50);
Pen pen = new Pen(Color.FromArgb(128, 200, 0, 200), 2);
e.Graphics.DrawRectangle(pen, rect);

Le code ci-dessous applique une transformation de type mise à l'échelle qui agrandit le rectangle selon un pourcentage égal à 1,75 dans le sens des x et le rétrécit selon un pourcentage égal à 0,5 dans le sens des y :

e.Graphics.ScaleTransform(1.75F, 0.5F)
e.Graphics.DrawRectangle(pen, rect)
e.Graphics.ScaleTransform(1.75f, 0.5f);
e.Graphics.DrawRectangle(pen, rect); 

Le résultat aboutit à un rectangle plus long dans le sens des x et plus court dans le sens des y.

Pour faire pivoter le rectangle au lieu de le mettre à l'échelle, utilisez le code suivant :

e.Graphics.ResetTransform()
e.Graphics.RotateTransform(28) ' 28 degrees
e.Graphics.DrawRectangle(pen, rect)
e.Graphics.ResetTransform();
e.Graphics.RotateTransform(28); // 28 degrees
e.Graphics.DrawRectangle(pen, rect);

Pour appliquer une translation au rectangle, utilisez le code suivant :

e.Graphics.ResetTransform()
e.Graphics.TranslateTransform(150, 150)
e.Graphics.DrawRectangle(pen, rect)
e.Graphics.ResetTransform();
e.Graphics.TranslateTransform(150, 150);
e.Graphics.DrawRectangle(pen, rect);

Voir aussi

Référence

Matrix

Autres ressources

Systèmes de coordonnées et transformations
Transformations