Partager via


Utilisation de la transformation universelle

La transformation du monde est une propriété de la classe Graphics . Les nombres qui spécifient la transformation mondiale sont stockés dans un objet Matrix , qui représente une matrice 3 ×3. Les classes Matrix et Graphics ont plusieurs méthodes pour définir les nombres dans la matrice de transformation du monde. Les exemples de cette section manipulent des rectangles, car les rectangles sont faciles à dessiner et il est facile de voir les effets des transformations sur les rectangles.

Nous commençons par créer un rectangle 50 sur 50 et le localiser à l’origine (0, 0). L’origine se trouve dans le coin supérieur gauche de la zone cliente.

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.DrawRectangle(&pen, rect);

Le code suivant applique une transformation de mise à l’échelle qui développe le rectangle d’un facteur de 1,75 dans la direction x et réduit le rectangle d’un facteur de 0,5 dans la direction y :

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.ScaleTransform(1.75f, 0.5f);
graphics.DrawRectangle(&pen, rect);

Le résultat est un rectangle qui est plus long dans la direction x et plus court dans la direction y que l’original.

Pour faire pivoter le rectangle au lieu de le mettre à l’échelle, utilisez le code suivant au lieu du code précédent :

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.RotateTransform(28.0f);
graphics.DrawRectangle(&pen, rect);

Pour traduire le rectangle, utilisez le code suivant :

Rect rect(0, 0, 50, 50);
Pen pen(Color(255, 255, 0, 0), 0);
graphics.TranslateTransform(150.0f, 150.0f);
graphics.DrawRectangle(&pen, rect);