Mise à l'échelle SVG – SVG Scaling – Exemples C#
Comment mettre à l’échelle SVG – Code C#
À l’aide de la
bibliothèque Aspose.SVG for .NET, vous pouvez effectuer une transformation d’échelle par programme. Cet article a couvert des exemples C# pour la mise à l’échelle SVG. Cas considérés d’utilisation de la fonction scale() dans l’attribut transform ainsi que d’une matrice de transformation matrix(a,b,c,d,e,f).
Fonction Scale()
La mise à l’échelle est une transformation SVG qui agrandit ou réduit un objet à l’aide d’un facteur de mise à l’échelle. Vous devez distinguer la mise à l’échelle uniforme et directionnelle. La fonction de transformation scale(sx, sy) permet de mettre à l’échelle les images le long des axes x et y. La valeur du facteur d’échelle sy est facultative et si elle est omise, elle est supposée être égale à sx.
L’extrait de code C# suivant montre comment créer un élément SVG <circle>, définir ses attributs et appliquer une transformation à l’aide de la fonction scale() pour l’attribut transform.
- Créez une instance de la classe
SVGDocument. La propriété
RootElementpointe vers l’élément racine<svg>du document. - Créez un élément
<circle>et définissez les attributs requis.- Vous pouvez utiliser la méthode CreateElementNS() pour créer une instance de la classe SVGCircleElement.
- Appelez la méthode
SetAttribute() pour définir les attributs spécifiant la position, la taille, le remplissage et la transformation. Utilisez la fonction
scale()pour l’attributtransformqui spécifie une transformation de mise à l’échelle. En particulier,scale(2)signifie mettre à l’échelle l’élément<circle>d’un facteur 2 dans les dimensions x et y.
- Pour ajouter
circleElementàsvgElement, vous pouvez utiliser la méthode AppendChild(). - 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 <circle> element and set its attributes
11 var circleElement = (SVGCircleElement)document.CreateElementNS("http://www.w3.org/2000/svg", "circle");
12 circleElement.Cx.BaseVal.Value = 100;
13 circleElement.Cy.BaseVal.Value = 100;
14 circleElement.R.BaseVal.Value = 50;
15 circleElement.SetAttribute("fill", "salmon");
16
17 // Apply scaling to the SVG circle
18 circleElement.SetAttribute("transform", "scale(2)");
19
20 // Append the <circle> element to the SVG document
21 svgElement.AppendChild(circleElement);
22
23 // Save the document
24 document.Save(Path.Combine(OutputDir, "scale-circle.svg"));
25 }Matrice de transformation SVG – Scale Matrix
Ici, nous examinerons l’exemple C# pour mettre à l’échelle une image SVG entière plutôt qu’un seul de ses éléments et implémenter la transformation à l’aide d’une matrice d’échelle. Examinons de plus près le code C# permettant d’appliquer la matrice d’échelle.
- Chargez un fichier SVG source en utilisant l’un des constructeurs SVGDocument().
- Obtenez l’élément racine
<svg>du document.
- Remarque : Pour appliquer une transformation à l’ensemble de l’image SVG, vous devez appliquer l’attribut
transformà l’élément racine<svg>.
- Utilisez la méthode
GetCTM() de la classe SVGGraphicsElement qui renvoie la matrice de transformation actuelle (CTM) associée à l’élément
<svg>. Le CTM représente les transformations cumulatives appliquées à l’élément et comprend des informations sur la traduction, la mise à l’échelle, la mise à l’échelle et l’inclinaison qui peuvent être appliquées à l’élément. - Après avoir obtenu le CTM, utilisez la méthode Scale() qui post-multiplie une transformation d’échelle sur la matrice actuelle et renvoie la matrice résultante. La méthode Scale(scaleFactor) ne prend qu’un seul argument: scaleFactor. Ce paramètre est obligatoire et représente la mise à l’échelle sur les axes x et y que vous souhaitez appliquer.
- Construisez un
transformAttribute– une représentation sous forme de chaîne d’une matrice de transformation 2D en utilisant les valeurs de la matrice de transformation modifiéetransformationMatrix. La notation matricielle est matrix(a, b, c, d, e, f). - Appelez la méthode
SetAttribute() pour définir l’attribut
transformde l’élément<svg>à l’aide de la chaînetransformAttribute. - Appelez la méthode Save() pour enregistrer l’image SVG résultante dans un fichier local.
1using Aspose.Svg;
2using System.IO;
3...
4
5 // Load an SVG document
6 string documentPath = Path.Combine(DataDir, "snowflake.svg");
7
8 using (var document = new SVGDocument(documentPath))
9 {
10 var svgElement = document.RootElement;
11
12 // Get the transformation matrix associated with the svgElement
13 var transformationMatrix = svgElement.GetCTM();
14 transformationMatrix = transformationMatrix.Scale(0.5F);
15
16 // Apply the transformation matrix to the svgElement
17 var transformAttribute = "matrix(" + transformationMatrix.A + "," + transformationMatrix.B + ","
18 + transformationMatrix.C + "," + transformationMatrix.D + "," + transformationMatrix.E + ","
19 + transformationMatrix.F + ")";
20 svgElement.SetAttribute("transform", transformAttribute);
21
22 // Save the document
23 document.Save(Path.Combine(OutputDir, "scale-svg.svg"));
24 }La figure suivante montre le SVG original (a) et l’image mise à l’échelle avec un facteur d’échelle de 0,5 – l’image réduite (b).

Voir également
- Vous pouvez télécharger les exemples complets et les fichiers de données depuis
GitHub.
- À propos du téléchargement depuis GitHub et de l’exécution d’exemples, vous le découvrirez dans la section
Comment exécuter les exemples.
- Pour apprendre à utiliser une matrice de transformation pour faire pivoter, mettre à l’échelle, traduire et incliner des graphiques SVG et considérer des exemples de code SVG, veuillez consulter l’article
Matrice de transformation – Exemples de code SVG.
- Lisez l’article SVG Transformation pour en savoir plus et obtenir des exemples de code SVG pour faire pivoter, mettre à l’échelle, déplacer et incliner les graphiques SVG à l’aide de l’attribut de transformation SVG.