Element Builders – Créer et modifier des éléments SVG – C#

Générateurs d’éléments dans Aspose.SVG – Element Builders

Les Element Builders sont des constructions logicielles ou des classes conçues pour faciliter la création ou la modification d’éléments SVG. Ces générateurs suivent généralement des modèles de conception, tels que le modèle Fluent Builder, qui fournissent une syntaxe fluide et expressive lors de la définition des attributs et de la structure des éléments SVG.

Dans l’API Aspose.SVG Builder, tous les générateurs d’éléments, tels que SVGSVGElementBuilder, SVGGElementBuilder et autres, héritent de la classe principale SVGElementBuilder. Cette structure d’héritage rationalise le processus de création et de modification des éléments SVG, garantissant ainsi la cohérence et l’efficacité entre les différents types d’éléments.

Les générateurs d’éléments fournissent la méthode Build(Document document), permettant la création de nouveaux éléments SVG et leur ajout à un document SVG et la méthode Build(T element) pour mettre à jour les éléments SVG existants.

Cet article se penche sur les générateurs d’éléments utilisés dans l’API Aspose.SVG Builder. Vous verrez leur efficacité dans la manipulation SVG. Vous découvrirez la classe SVGSVGElementBuilder, ses constructeurs spécialisés et comment ils simplifient la programmation SVG.

Création de nouveaux éléments

L’API Aspose.SVG SVG Builder utilise le modèle Fluent Builder, une méthodologie de conception qui correspond parfaitement au besoin de simplicité, de clarté et de polyvalence dans la manipulation SVG.

Modèle de constructeur fluide

Dans l’API SVG Builder, le modèle Fluent Builder est utilisé pour simplifier la création et la mise à jour des éléments SVG, rendant le processus intuitif et moins sujet aux erreurs. L’essence de ce modèle réside dans les méthodes qui configurent un élément SVG puis renvoient un objet constructeur. Cette conception fournit une manière cohérente et cohérente de relier les méthodes, ce qui est particulièrement efficace pour réduire la complexité associée à la création et à la gestion des éléments SVG.

Dans ce contexte, les expressions lambda sont utilisées pour améliorer la clarté et la concision des méthodes de configuration du constructeur. Les expressions Lambda vous permettent de définir les attributs et les styles des éléments SVG de manière détaillée mais compacte. Par exemple, lors de l’ajout d’un élément cercle, l’expression lambda fournit une configuration lisible en ligne:

1    var svgElement = new SVGSVGElementBuilder()
2        .AddCircle(circle => circle
3            .Cx(100).Cy(100).R(50)
4            .Fill(Color.Red).Stroke(Paint.None)
5            .StrokeWidth(2))
6        .Build();

Ici, circle => circle.Cx(100).Cy(100).R(50).Fill(Color.Red).Stroke(Paint.None).StrokeWidth(2) est une manière succincte de configurer le cercle. propriétés, telles que son centre, son rayon, son remplissage et son contour. Cette approche simplifie non seulement la configuration des éléments, mais améliore également la lisibilité et la maintenabilité du code.

Créer du SVG à partir de zéro

Ici, nous explorerons une approche concise et élégante pour créer des SVG à partir de zéro en utilisant C#.

1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO;
 1    // Create SVG from scratch in C# using Builder API
 2
 3    // Create an <svg> element with specified width, height and viewBox, and add into it other required elements
 4    SVGSVGElement svg = new SVGSVGElementBuilder()
 5        .Width(700).Height(300)
 6        .ViewBox(0, 0, 700, 300)
 7
 8        .AddG(g => g
 9        .AddCircle(circle => circle.Cx(130).Cy(130).R(60).Fill(Paint.None).Stroke(Color.FromArgb(200, 0, 0)).StrokeWidth(70).StrokeDashArray(2, 14))
10        .AddText("I can create SVG from scratch!", x: 270, y: 140, fontSize: 30, fill: Color.Teal)
11        )
12        .Build(document.FirstChild as SVGSVGElement);
13
14    // Save the document
15    document.Save(Path.Combine(OutputDir, "svg-from-scratch.svg"));
16}

L’exemple utilise un modèle Fluent Builder dans SVGSVGElementBuilder pour construire les éléments SVG. Ce modèle fournit un moyen expressif et maintenable de générer des documents SVG par rapport à l’approche décrite dans l’article Modifier le fichier SVG, qui s’appuie davantage sur la manipulation DOM de bas niveau et la définition d’attributs explicites.

Texte “Visualisation du fichier svg-from-scratch.svg”

Ainsi, l’API SVG Builder offre un moyen flexible et efficace de générer des graphiques vectoriels en C#. En tirant parti des Element Builders et Builder Pattern, vous pouvez rationaliser le processus de création de SVG à partir de zéro. Cette approche:

Modification du SVG

Une technique puissante pour éditer par programme des SVG consiste à utiliser Element Builders.

Ajout de nouveaux éléments

L’édition de fichiers SVG à l’aide de générateurs d’éléments offre une approche puissante et flexible pour manipuler les graphiques vectoriels par programmation. Dans l’exemple suivant, nous prenons un fichier SVG existant, y ajoutons quelques éléments et l’enregistrons:

1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO;
 1// Add multiple shapes (circle and polyline) to an existing SVG document using SVG Builder
 2
 3string documentPath = Path.Combine(DataDir, "circles.svg");
 4
 5// Initialize an SVG document
 6using (SVGDocument document = new SVGDocument(documentPath))
 7{
 8    // Create a <circle> element with attributes
 9    SVGCircleElement circle = new SVGCircleElementBuilder()
10     .Cx(350).Cy(70).R(50).Fill(Paint.None).Stroke(Color.FromArgb(80, 132, 132)).StrokeWidth(10)
11     .Build(document);
12
13    // Append the newly created <circle> element to the root <svg> element
14    document.RootElement.AppendChild(circle);
15
16    // Create a <polyline> element with attributes
17    SVGPolylineElement polyline = new SVGPolylineElementBuilder()
18    .Points(new double[] { 125, 130, 275, 180, 425, 130 }).Stroke(Color.FromArgb(80, 132, 132)).Fill(Paint.None).StrokeWidth(10)
19    .Build(document);
20
21    // Append the newly created <polyline> element to the root <svg> element
22    document.RootElement.AppendChild(polyline);
23
24    // Save the document
25    document.Save(Path.Combine(OutputDir, "circles-edited.svg"));
26}

Dans cet exemple:

La figure (a) montre une visualisation du fichier circles.svg d’origine et la figure (b) montre une image du fichier circles-edited.svg modifié avec des éléments de cercle et de polyligne ajoutés.

Texte “Visualisation du fichier circles.svg original (a) et du fichier circles-edited.svg modifié avec des éléments de cercle et de polyligne ajoutés (b).”

Modification d’éléments existants

Dans l’exemple C# suivant, nous mettons à jour un document SVG existant en modifiant la couleur de remplissage et de contour du premier élément SVG <circle> dans le document:

1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.Linq;
4using System.IO;
 1// Modify an existing SVG element in C# using SVG Builder
 2
 3string documentPath = Path.Combine(DataDir, "circles.svg");
 4
 5// Initialize an SVG document
 6using (SVGDocument document = new SVGDocument(documentPath))
 7{
 8    // Assume an existing SVG element is part of the document
 9    SVGCircleElement circle = document.GetElementsByTagName("circle").First() as SVGCircleElement;
10
11    // Modify the first <circle> element using SVGCircleElementBuilder
12    new SVGCircleElementBuilder()
13        .Stroke(Color.DarkRed).Fill(Color.LightGray)
14
15        // The first <circle> element is now updated with new configurations
16        .Build(circle);
17
18    // Save the document
19    document.Save(Path.Combine(OutputDir, "circles-modified.svg"));
20}

Les constructeurs d’éléments proposent la méthode Build(T element) pour mettre à jour les éléments SVG existants, permettant de modifier leurs attributs ou styles. La figure (a) montre le fichier circles.svg d’origine et la figure (b) montre une image du fichier circles-modified.svg modifié avec le premier élément de cercle recoloré.

Texte “Visualisation du fichier circles.svg original (a) et du fichier circles-modified.svg modifié avec le premier élément de cercle recoloré (b).”

Exemple d’utilisation de générateurs d’éléments

L’extrait de code suivant montre comment utiliser les générateurs d’éléments pour créer un document SVG avec divers éléments de forme SVG.

1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO;
 1// Create all basic SVG shapes programmatically in C# using SVG Builder
 2
 3string svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>";
 4using (SVGDocument document = new SVGDocument(svgContent, "."))
 5{
 6    SVGSVGElement svg = new SVGSVGElementBuilder()
 7        .Width(100, LengthType.Percentage).Height(100, LengthType.Percentage)
 8        .ViewBox(0, 0, 800, 800)
 9
10            .AddG(g => g.FontSize(20).TextAnchor(TextAnchor.End)
11                .AddText("<rect>", y: 30)
12                .AddText("<circle>", y: 70)
13                .AddText("<ellipse>", y: 110)
14                .AddText("<line>", y: 150)
15                .AddText("<polyline>", x: 300, y: 30)
16                .AddText("<polygon>", x: 300, y: 70)
17                .AddText("<path>", x: 300, y: 110)
18                )
19
20            .AddG(gg => gg.Fill(Color.Teal).StrokeWidth(3)
21                .AddRect(r => r.X(35).Y(5).Width(30).Height(30))
22                .AddCircle(c => c.Cx(50).Cy(60).R(17))
23                .AddEllipse(e => e.Cx(50).Cy(100).Rx(25).Ry(12))
24                .AddLine(l => l.X1(30).X2(70).Y1(140).Y2(140).Stroke(Color.Teal))
25                )
26            .AddG(ggg => ggg.Fill(Paint.None).StrokeWidth(3).Stroke(Color.Teal).Transform(t => t.Translate(300, -160))
27                .AddPolygon(points: new double[] { 30, 215, 90, 215, 120, 230, 70, 240, 30, 215 }, fill: Color.Teal)
28                .AddPolyline(points: new double[] { 30, 200, 65, 170, 90, 190, 120, 180 })
29                .AddPath(d: path => path.M(30, 275).Q(55, 250, 70, 250).T(80, 275).T(120, 260))
30                )
31
32        .Build(document.FirstChild as SVGSVGElement);
33    document.Save(Path.Combine(OutputDir, "svg-elements.svg"));
34}

Texte “Visualisation du fichier svg-elements.svg avec les noms et images des 7 éléments de forme SVG.”

Les générateurs d’éléments fournissent une syntaxe fluide et expressive pour construire des éléments SVG, améliorant ainsi la lisibilité et la maintenabilité du code. Dans cet exemple, le générateur d’éléments, tel que SVGSVGElementBuilder, est utilisé pour construire un élément SVG avec les attributs width, height et viewBox. Le modèle Fluent Builder est ensuite utilisé pour créer des formes telles que des rectangles, des cercles, des ellipses, des lignes, des polylignes, des polygones et des chemins, chacun étant positionné et stylé en conséquence dans les éléments <g>.

Voir également

  • Dans l’article Modifier le fichier SVG, vous apprendrez comment éditer SVG à l’aide de la bibliothèque Aspose.SVG for .NET et examinerez des exemples C# détaillés sur la façon d’ajouter des éléments à un SVG. documenter et les modifier.
  • Veuillez consulter l’article Path Builder pour apprendre à utiliser Path Builder pour créer par programme des chemins SVG, un groupe de commandes permettant de dessiner divers contours ou formes en combinant des lignes SVG, des arcs SVG et des courbes de Bézier.
  • L’article Rule Builder concerne la classe RuleBuilder, qui est une classe de construction permettant de construire des règles de style CSS dans un document SVG.
  • L’article Paint Builder concerne PaintBuilder, une classe de construction permettant de créer des valeurs de peinture pour les éléments SVG. Cette classe est utilisée pour spécifier la valeur des attributs stroke ou fill pour diverses formes et éléments SVG lors du remplissage avec de la peinture, un motif ou un dégradé.
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.