Transformations SVG – Exemples C#

En SVG, les transformations sont utilisées pour modifier la position, la taille, l’orientation et l’inclinaison des éléments SVG dans le canevas SVG. Les objets SVG peuvent être transformés à l’aide des propriétés de l’attribut de transformation: translation, scale, rotate, skewX, skewY et matrix. À l’aide de la bibliothèque Aspose.SVG pour .NET, vous pouvez effectuer ces transformations par programme. Dans ce chapitre, vous trouverez un aperçu général de la façon dont vous pouvez travailler avec des transformations à l’aide d’Aspose.SVG.

Le chapitre actuel décrit les transformations SVG populaires, ainsi que des exemples C# pour les scénarios de transformation les plus courants.

  • Faire pivoter SVG – Cet article couvre des exemples C# pour la rotation SVG. Cas considérés d’utilisation de la fonction rotate() dans l’attribut transform ainsi que d’une matrice de transformation matrix(a,b,c,d,e,f).
  • Mise à l’échelle SVG – Cet article présente des exemples C# pour la mise à l’échelle SVG.
  • Translate SVG – Dans cette section, vous apprendrez à traduire SVG par programmation en C#.

Quelques façons de transformer SVG en C#

  1. Utilisation des propriétés d’attribut transform. Les propriétés d’attribut de transformation en SVG vous permettent de manipuler des éléments à l’aide des fonctions de transformation suivantes:
  1. Utilisation de la matrice de transformation. La matrice de transformation est une manière mathématique de décrire les transformations SVG. La matrice inclut des valeurs de mise à l’échelle, de rotation, d’inclinaison et de translation, offrant plus de flexibilité pour les transformations complexes. La matrice de transformation combine les transformations de translation, d’échelle, de rotation et d’inclinaison.

Ces deux méthodes offrent différents niveaux de complexité et de précision, l’attribut transform étant plus facile pour les transformations simples tandis que la matrice de transformation permet un meilleur contrôle sur le processus de transformation. Examinons ces méthodes à l’aide d’exemples C# pour une transformation SVG, telle que la traduction SVG.

Transformation SVG – Fonction Translate()

L’extrait de code C# suivant montre comment créer un élément SVG <rect>, définir ses attributs et appliquer une transformation de traduction à l’aide de l’attribut transform. La transformation déplace le rectangle de 150 unités vers la droite et de 50 unités vers le bas.

  1. Créez une instance de la classe SVGDocument. La propriété RootElement pointe vers l’élément racine <svg> du document.
  2. Créez un élément <rect> avec des attributs et ajoutez-le à l’élément <svg>:
    • Vous pouvez utiliser la méthode CreateElementNS() pour créer une instance de la classe SVGRectElement.
    • Appelez la méthode SetAttribute(name, value) pour définir les attributs spécifiant la position, la taille, le remplissage et la transformation. L’attribut transform est défini sur l’élément <rect> en utilisant la valeur "translate(150, 50)". Cela applique une transformation de translation qui déplace le rectangle de 150 unités vers la droite et de 50 unités vers le bas.
  3. Pour ajouter rectElement à svgElement, vous pouvez utiliser la méthode AppendChild().
  4. Appelez la méthode Save() pour enregistrer l’image SVG résultante dans un fichier local spécifié par chemin.
 1using Aspose.Svg;
 2using System.IO;
 3...
 4
 5	// Create a new SVG document
 6	using (var document = new SVGDocument())
 7	{
 8		var svgElement = document.RootElement;
 9
10		// Create a <rect> element and set its attributes
11		var rectElement = (SVGRectElement)document.CreateElementNS("http://www.w3.org/2000/svg", "rect");
12		rectElement.X.BaseVal.Value = 50;
13		rectElement.Y.BaseVal.Value = 50;
14		rectElement.Width.BaseVal.Value = 100;
15		rectElement.Height.BaseVal.Value = 100;
16		rectElement.SetAttribute("fill", "blue");
17
18		// Apply translate() function to the rectangle
19		rectElement.SetAttribute("transform", "translate(150, 50)");
20
21		// Append the <rect> element to the <svg> element
22		svgElement.AppendChild(rectElement);
23
24		// Save the document
25		document.Save(Path.Combine(OutputDir, "translate.svg"));
26	}

Matrice de transformation SVG

Ici, nous allons examiner l’exemple C# comme celui ci-dessus : créer un élément SVG <rect>, définir ses attributs et implémenter la traduction à l’aide d’une matrice de transformation. Examinons de plus près le code C# pour implémenter la matrice de transformation.

  1. Utilisez la méthode GetCTM() de la classe SVGGraphicsElement qui renvoie la matrice de transformation actuelle (CTM) associée à l’élément <rect>. Le CTM représente les transformations cumulatives appliquées à l’élément et comprend des informations sur la translation, la rotation, la mise à l’échelle et l’inclinaison qui peuvent être appliquées à l’élément.
  2. Après avoir obtenu le CTM, utilisez la méthode Translate() qui post-multiplie une transformation de traduction sur la matrice actuelle et renvoie la matrice résultante. La méthode Translate(dx, dy) prend deux arguments – dx et dy – représentant respectivement les distances de translation horizontale et verticale.
  3. Construisez un transformAttribute – une représentation sous forme de chaîne d’une matrice de transformation 2D en utilisant les valeurs du transformationMatrix modifié. La notation matricielle est matrix(a, b, c, d, e, f).
  4. Appelez la méthode SetAttribute() pour définir l’attribut transform de l’élément <rect> à l’aide de la chaîne transformAttribute.
 1using Aspose.Svg;
 2using System.IO;
 3...
 4
 5	// Create a new SVG document
 6	using (var document = new SVGDocument())
 7	{
 8		var svgElement = document.RootElement;
 9
10		// Create a <rect> element and set its attributes
11		var rectElement = (SVGRectElement)document.CreateElementNS("http://www.w3.org/2000/svg", "rect");
12		rectElement.X.BaseVal.Value = 150;
13		rectElement.Y.BaseVal.Value = 50;
14		rectElement.Width.BaseVal.Value = 100;
15		rectElement.Height.BaseVal.Value = 100;
16		rectElement.SetAttribute("fill", "blue");
17		svgElement.AppendChild(rectElement);
18
19		// Get the current transformation matrix associated with the rectElement
20		var transformationMatrix = rectElement.GetCTM();
21		transformationMatrix = transformationMatrix.Translate(150, 50);
22
23		// Apply the transformation matrix to the rectElement
24		var transformAttribute = "matrix(" + transformationMatrix.A + "," + transformationMatrix.B + ","
25			+ transformationMatrix.C + "," + transformationMatrix.D + "," + transformationMatrix.E + ","
26			+ transformationMatrix.F + ")";
27		rectElement.SetAttribute("transform", transformAttribute);
28
29		// Save the document
30		document.Save(Path.Combine(OutputDir, "translation-matrix.svg"));
31	}

Voir également

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.