matrice-global-local-monde-transformation

Les systèmes de coordonnées sont importants lorsque vous travaillez avec des graphiques et des formes. L’axe de coordonnées peut être tourné pour obtenir de nouveaux axes passant par la même origine. Explorons les transformations suivantes, y compris la transformation Matrix, Global, Local et World à l’aide du langage C#. De plus, apprenons les transformations suivantes à travers cet article :

Transformation matricielle, globale, locale et mondiale - Installation de l’API C#

Aspose.Drawing for .NET L’API prend en charge le traitement de différents objets de dessin. Vous pouvez facilement créer, modifier, transformer ou restituer des graphiques dans vos applications basées sur .NET. Téléchargez simplement le fichier DLL à partir de la section Nouvelles versions. En revanche, vous pouvez le configurer depuis NuGet avec la commande d’installation suivante :

PM> Install-Package Aspose.Drawing

Appliquer la transformation matricielle par programmation à l’aide de C#

La classe Matrix a une matrice affine 3 par 3 qui représente la transformation. Vous pouvez l’utiliser pour faire pivoter, traduire ou mettre à l’échelle une forme selon vos besoins. Les étapes suivantes expliquent comment appliquer la transformation matricielle :

  1. Instancier l’objet de classe Bitmap
  2. Créer une forme
  3. Appliquer la transformation matricielle

Le code ci-dessous montre comment appliquer la transformation de matrice par programmation à l’aide du langage C# :

// Initialiser l'objet de classe Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Déclarer l'objet de classe Graphics
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Lancer l'objet de classe Rectangle
Rectangle originalRentangle = new Rectangle(300, 300, 300, 200);
TransformPath(graphics, originalRentangle, (matrix) => matrix.Rotate(15.0f));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Translate(-250, -250));
TransformPath(graphics, originalRentangle, (matrix) => matrix.Scale(0.3f, 0.3f));

// Enregistrer l'image de sortie avec la transformation matricielle
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\MatrixTransformations_out.png");

private static void TransformPath(Graphics graphics, Rectangle originalRentangle, Action<Matrix> transform)
{
    GraphicsPath path = new GraphicsPath();
    path.AddRectangle(originalRentangle);

    Matrix matrix = new Matrix();
    transform(matrix);
    path.Transform(matrix);

    Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
    graphics.DrawPath(pen, path);
}

Appliquer la transformation des coordonnées globales par programme avec C#

La transformation globale est utilisée pour transformer tous les objets graphiques d’un dessin. Vous pouvez suivre les étapes ci-dessous pour appliquer la transformation des coordonnées globales :

  1. Initialiser une instance de la classe Bitmap
  2. Déclarer l’objet de classe Graphics
  3. Définir la rotation
  4. Dessiner une forme avec la transformation globale

Le code suivant élabore la transformation de coordonnées globales par programmation à l’aide de C# :

// Initialiser l'objet de classe Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Définissez une transformation qui s'applique à chaque élément dessiné :
graphics.RotateTransform(15);

Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawEllipse(pen, 300, 300, 400, 200);

// Enregistrer l'image de sortie avec la transformation Glabal
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\GlobalTransformation_out.png");

Définir la transformation locale par programme en C#

La transformation locale est liée à des formes ou des graphiques spécifiques dans un dessin. Cela peut s’expliquer par la transformation d’un chemin graphique où seuls les éléments de ce chemin sont transformés. Vous pouvez définir une transformation locale en procédant comme suit :

  1. Initialiser un objet de la classe Bitmap
  2. Déclarer l’objet de classe Graphics et GraphicsPath
  3. Créer une forme et définir Matrix
  4. Méthode d’appel de transformation

L’extrait de code ci-dessous explique comment définir la transformation locale par programmation à l’aide de C# :

// Initialiser l'objet de classe Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

GraphicsPath path = new GraphicsPath();
path.AddEllipse(300, 300, 400, 200);

// Définissez une transformation qui s'applique au chemin spécifique à dessiner :
Matrix matrix = new Matrix();
matrix.RotateAt(45, new Point(500, 400));
path.Transform(matrix);

Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawPath(pen, path);

// Enregistrer l'image de sortie avec la transformation locale
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\LocalTransformation_out.png");

Appliquer la transformation du monde par programmation à l’aide de C#

La conversion des coordonnées du monde en coordonnées de la page est connue sous le nom de transformation du monde. Ces coordonnées de page sont ensuite utilisées pour le rendu des graphiques sur différents appareils. Vous pouvez donc appliquer la transformation du monde à l’aide de C# en suivant les étapes ci-dessous :

  1. Initialiser un objet de la classe Bitmap
  2. Appelez la méthode TranslateTransform
  3. Dessiner une forme

Le code suivant montre comment appliquer la transformation du monde par programmation à l’aide du langage C# :

// Initialiser l'objet de classe Bitmap
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.FromKnownColor(KnownColor.Gray));

// Définissez la transformation qui mappe les coordonnées mondiales aux coordonnées de la page :
graphics.TranslateTransform(500, 400);

Pen pen = new Pen(Color.FromKnownColor(KnownColor.Blue), 2);
graphics.DrawRectangle(pen, 0, 0, 300, 200);

// Enregistrer l'image de sortie avec World Transformation
bitmap.Save(dataDir + @"CoordinateSystemsTransformations\WorldTransformation_out.png");

Conclusion

En un mot, vous avez appris différentes transformations liées à l’infographie et aux formes. Vous devez être capable de comprendre les détails de la transformation globale, locale et mondiale à l’aide du langage C#. De plus, vous pouvez lire la Documentation API pour plus de détails ou nous contacter via les Forums d’assistance gratuits. Nous aimerions vous aider!

Voir également