Mise à l'échelle SVG – SVG Scaling – Exemples C#

Comment mettre à l’échelle SVG – Code C#

À l’aide de la bibliothèque Aspose.SVG pour .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.

  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 <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’attribut transform qui 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.
  3. Pour ajouter circleElement à 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 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 rect element to the SVG
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.

  1. Chargez un fichier SVG source en utilisant l’un des constructeurs SVGDocument().
  2. Obtenez l’élément racine <svg> du document.
  1. 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.
  2. 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.
  3. 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ée transformationMatrix. 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 <svg> à l’aide de la chaîne transformAttribute.
  5. 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).

Texte “La figure montre le SVG original (a) et l’image mise à l’échelle (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.
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.