Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
L’ Aspose.SVG Builder API permet aux développeurs de créer et de modifier des éléments SVG par programmation en C# avec une syntaxe fluent builder. Au lieu de construire manuellement du XML SVG ou de manipuler directement les attributs DOM, Element Builders offre une approche plus propre et plus maintenable pour générer du SVG.
La Builder API prend en charge les éléments SVG courants tels que les rectangles, cercles, chemins, lignes, polygones, textes et groupes. Grâce aux builders imbriqués et aux méthodes chaînées, les développeurs peuvent générer des graphiques SVG complexes avec moins de code répétitif et une meilleure lisibilité.
Cet article explique comment créer des éléments SVG en C#, construire des graphiques SVG par programmation et modifier des documents SVG existants avec Aspose.SVG for .NET. Vous découvrirez la classe de base
SVGElementBuilder
Les Element Builders sont des classes spécialisées utilisées pour créer des éléments SVG par programmation. Chaque builder correspond à un élément SVG précis et fournit des méthodes fortement typées pour configurer les attributs et styles SVG.
La Builder API prend en charge:
La syntaxe fluide simplifie la génération SVG et améliore la maintenabilité du code dans les applications .NET.
| Builder | Élément SVG |
|---|---|
| SVGSVGElementBuilder | <svg> |
| SVGRectElementBuilder | <rect> |
| SVGCircleElementBuilder | <circle> |
| SVGLineElementBuilder | <line> |
| SVGPathElementBuilder | <path> |
| SVGTextElementBuilder | <text> |
| SVGGElementBuilder | <g> |
| SVGPolygonElementBuilder | <polygon> |
| SVGPolylineElementBuilder | <polyline> |
Vous trouverez la liste complète des builders SVG sur la page de référence API Aspose.Svg.Builder.
L’API Aspose.SVG SVG Builder utilise le Fluent Builder Pattern, une approche de conception adaptée aux besoins de simplicité, de clarté et de polyvalence dans la manipulation SVG.
Dans SVG Builder API, le Fluent Builder Pattern simplifie la création et la mise à jour des éléments SVG, rendant le processus plus intuitif et moins sujet aux erreurs. Le principe consiste à utiliser des méthodes qui configurent un élément SVG et renvoient l’instance du builder pour le chaînage de méthodes.
Les expressions lambda améliorent la clarté et la concision des méthodes de configuration. Elles permettent de définir les attributs et styles des éléments SVG de manière détaillée mais compacte:
1 using (SVGDocument document = new SVGDocument())
2 {
3 SVGSVGElement svgElement = new SVGSVGElementBuilder()
4 .AddCircle(circle => circle
5 .Cx(100).Cy(100).R(50)
6 .Fill(Color.Red).Stroke(Paint.None)
7 .StrokeWidth(2))
8 .Build(document);
9 }Ici, circle => circle.Cx(100).Cy(100).R(50).Fill(Color.Red).Stroke(Paint.None).StrokeWidth(2) est une façon concise de configurer le centre, le rayon, le remplissage et le contour du cercle. Cette approche simplifie la configuration des éléments et améliore la lisibilité ainsi que la maintenabilité du code.
Voici une approche concise pour créer des SVG à partir de zéro avec 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 le Fluent Builder Pattern dans SVGSVGElementBuilder pour construire les éléments SVG. Ce modèle offre une manière expressive et maintenable de générer des documents SVG par rapport à l’approche décrite dans l’article Modifier le fichier SVG, qui repose davantage sur la manipulation DOM de bas niveau et la définition explicite d’attributs. Cette approche:
cx, cy, r et fill sont définis directement avec des méthodes du builder.Une technique puissante pour modifier des SVG par programmation consiste à utiliser Element Builders.
Modifier des SVG avec des Element Builders offre une approche puissante et flexible pour manipuler des graphiques vectoriels par programmation. Dans l’exemple suivant, un fichier SVG existant est chargé, enrichi, puis enregistré:
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:
<circle> est créé avec
SVGCircleElementBuilder. Ses attributs cx, cy, r, fill, stroke et stroke-width sont configurés avec des appels de méthodes fluides.<polyline> est créé avec
SVGPolylineElementBuilder, avec des points et des paramètres de contour définis par programmation.Document document) construit l’élément et le renvoie pour l’ajouter au document.<circle> et <polyline> sont ajoutés comme enfants à l’élément racine <svg> du document SVG.La figure (a) montre le fichier circles.svg original, et la figure (b) montre le fichier circles-edited.svg modifié avec un cercle et une polyligne ajoutés.

Dans l’exemple C# suivant, nous mettons à jour un document SVG existant en changeant la couleur de remplissage et de contour du premier élément SVG <circle> du document:
1using Aspose.Svg;
2using Aspose.Svg.Builder;
3using System.Drawing;
4using Aspose.Svg.Dom.Svg;
5using System.Linq;
6using 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}Element Builders fournit la méthode
Build(T element) pour mettre à jour des éléments SVG existants et modifier leurs attributs ou styles. La figure (a) montre le fichier circles.svg original, et la figure (b) montre circles-modified.svg avec le premier cercle recoloré.

L’extrait suivant montre comment utiliser Element Builders pour créer un document SVG contenant différents éléments de forme SVG.
1using Aspose.Svg;
2using Aspose.Svg.Builder;
3using System.Drawing;
4using Aspose.Svg.Dom.Svg;
5using 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}
Element Builders fournit une syntaxe fluide et expressive pour construire des éléments SVG, ce qui améliore la lisibilité et la maintenabilité du code. Dans cet exemple, SVGSVGElementBuilder construit un élément SVG avec les attributs width, height et viewBox. Le Fluent Builder Pattern est ensuite utilisé pour créer des rectangles, cercles, ellipses, lignes, polylignes, polygones et chemins, chacun étant positionné et stylisé dans des éléments <g>.
| Manipulation DOM | Builder API |
|---|---|
| Gestion manuelle des attributs | Méthodes fortement typées |
| Code plus verbeux | Syntaxe fluide chaînée |
| Plus difficile à maintenir | Plus facile à lire |
| Opérations XML répétées | Logique de builder réutilisable |
1. Pourquoi utiliser Builder APIs au lieu de générer directement du XML?
Builder APIs remplace la construction XML manuelle par des méthodes fluides typées, ce qui rend le code SVG plus lisible, maintenable et extensible.
2. Le SVG généré respecte-t-il les standards?
Oui. Aspose.SVG génère un balisage SVG basé sur les standards et compatible avec les moteurs de rendu SVG modernes.
3. Puis-je générer des graphiques SVG interactifs avec Element Builders?
Oui. Les éléments SVG générés peuvent ensuite être stylisés, animés ou manipulés avec CSS et JavaScript dans des applications web.
4. Les graphiques SVG générés peuvent-ils être intégrés directement dans des pages HTML?
Oui. Les documents SVG créés avec Aspose.SVG peuvent être intégrés en ligne dans HTML ou utilisés comme fichiers SVG autonomes.
| Problème | Cause possible | Correction recommandée |
|---|---|---|
| L’élément SVG n’est pas visible | Remplissage ou contour manquant | Appliquer Fill() ou Stroke() |
| Les changements SVG ne sont pas enregistrés | Le document n’a pas été enregistré après modification | Appeler document.Save() après les mises à jour |
| Les éléments apparaissent hors du canevas | Coordonnées ou viewBox incorrectes | Vérifier les dimensions et positions SVG |
| L’élément existant n’est pas mis à jour | Référence d’élément incorrecte | Vérifier que l’élément cible est bien récupéré |
| Les formes semblent déformées | Proportions viewBox invalides | Utiliser des systèmes de coordonnées SVG cohérents |
stroke ou fill pour diverses formes et éléments SVG lors du remplissage avec de la peinture, un motif ou un dégradé.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.