Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Die Aspose.SVG Builder API ermöglicht Entwicklern, SVG-Elemente in C# mit einer Fluent-Builder-Syntax programmgesteuert zu erstellen und zu bearbeiten. Statt SVG-XML manuell zu erzeugen oder DOM-Attribute direkt zu ändern, bieten Element Builders einen saubereren und besser wartbaren Ansatz für die SVG-Erzeugung.
Die Builder API unterstützt gängige SVG-Elemente wie Rechtecke, Kreise, Pfade, Linien, Polygone, Text und Gruppen. Mit verschachtelten Buildern und verketteten Methoden können Entwickler komplexe SVG-Grafiken mit weniger Boilerplate-Code und besserer Lesbarkeit erzeugen.
In diesem Artikel erfahren Sie, wie Sie SVG-Elemente in C# erstellen, SVG-Grafiken programmgesteuert aufbauen und vorhandene SVG-Dokumente mit Aspose.SVG for .NET ändern. Sie lernen die Basisklasse
SVGElementBuilder
Element Builders sind spezialisierte Builder-Klassen zum programmgesteuerten Erstellen von SVG-Elementen. Jeder Builder entspricht einem bestimmten SVG-Element und stellt stark typisierte Methoden zum Konfigurieren von SVG-Attributen und Stilen bereit.
Die Builder API unterstützt:
Die Fluent-Syntax vereinfacht die SVG-Erzeugung und verbessert die Wartbarkeit von Code in .NET-Anwendungen.
| Builder | SVG-Element |
|---|---|
| SVGSVGElementBuilder | <svg> |
| SVGRectElementBuilder | <rect> |
| SVGCircleElementBuilder | <circle> |
| SVGLineElementBuilder | <line> |
| SVGPathElementBuilder | <path> |
| SVGTextElementBuilder | <text> |
| SVGGElementBuilder | <g> |
| SVGPolygonElementBuilder | <polygon> |
| SVGPolylineElementBuilder | <polyline> |
Eine vollständige Liste der SVG Element Builders finden Sie auf der API-Referenzseite Aspose.Svg.Builder.
Die Aspose.SVG SVG Builder API verwendet das Fluent Builder Pattern, eine Entwurfsmethode, die gut zu den Anforderungen an Einfachheit, Klarheit und Vielseitigkeit bei der SVG-Manipulation passt.
In der SVG Builder API wird das Fluent Builder Pattern verwendet, um das Erstellen und Aktualisieren von SVG-Elementen intuitiver und weniger fehleranfällig zu machen. Der Kern dieses Musters sind Methoden, die ein SVG-Element konfigurieren und die Builder-Instanz für Method Chaining zurückgeben.
Lambda-Ausdrücke verbessern dabei die Klarheit und Kürze der Builder-Konfiguration. Sie ermöglichen es, Attribute und Stile von SVG-Elementen detailliert und dennoch kompakt zu definieren:
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 }Hier ist circle => circle.Cx(100).Cy(100).R(50).Fill(Color.Red).Stroke(Paint.None).StrokeWidth(2) eine kompakte Möglichkeit, Mittelpunkt, Radius, Füllung und Kontur des Kreises zu konfigurieren. Dieser Ansatz vereinfacht die Elementkonfiguration und verbessert die Lesbarkeit sowie Wartbarkeit des Codes.
Hier sehen Sie einen kompakten Ansatz zum Erstellen von SVGs von Grund auf mit 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}
Das Beispiel nutzt das Fluent Builder Pattern in SVGSVGElementBuilder, um SVG-Elemente zu erstellen. Dieses Muster bietet eine ausdrucksstarke und wartbare Möglichkeit, SVG-Dokumente zu generieren, im Vergleich zu dem im Artikel SVG-Datei bearbeiten beschriebenen Ansatz, der stärker auf Low-Level-DOM-Manipulation und explizite Attributsetzung setzt. Dieser Ansatz:
cx, cy, r und fill direkt über Builder-Methoden gesetzt werden.Eine leistungsfähige Technik zum programmgesteuerten Bearbeiten von SVGs ist die Verwendung von Element Builders.
Das Bearbeiten von SVGs mit Element Builders bietet einen flexiblen Ansatz zur programmgesteuerten Manipulation von Vektorgrafiken. Im folgenden Beispiel wird eine vorhandene SVG-Datei geladen, erweitert und gespeichert:
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}In diesem Beispiel:
<circle>-Element wird mit
SVGCircleElementBuilder erstellt. Die Attribute cx, cy, r, fill, stroke und stroke-width werden über Fluent-Methoden konfiguriert.<polyline>-Element wird mit
SVGPolylineElementBuilder erstellt. Punkte und Kontureinstellungen werden programmgesteuert definiert.Document document) das Element und gibt es zum Einfügen in das Dokument zurück.<circle>- und <polyline>-Elemente werden als Kinder an das SVG-Stammelement angehängt.Abbildung (a) zeigt die ursprüngliche Datei circles.svg, und Abbildung (b) zeigt die bearbeitete Datei circles-edited.svg mit hinzugefügtem Kreis und Polyline.

Im folgenden C#-Beispiel aktualisieren wir ein vorhandenes SVG-Dokument, indem wir Füll- und Konturfarbe des ersten SVG-Elements <circle> im Dokument ändern:
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 bieten die Methode
Build(T element), um vorhandene SVG-Elemente zu aktualisieren und deren Attribute oder Stile zu ändern. Abbildung (a) zeigt die ursprüngliche Datei circles.svg, und Abbildung (b) zeigt circles-modified.svg mit dem neu eingefärbten ersten Kreiselement.

Der folgende Codeausschnitt zeigt, wie Sie mit Element Builders ein SVG-Dokument mit verschiedenen SVG-Formelementen erstellen.
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 bieten eine flüssige und ausdrucksstarke Syntax zum Erstellen von SVG-Elementen und verbessern die Lesbarkeit und Wartbarkeit des Codes. In diesem Beispiel erstellt SVGSVGElementBuilder ein SVG-Element mit den Attributen width, height und viewBox. Anschließend werden Rechtecke, Kreise, Ellipsen, Linien, Polylinien, Polygone und Pfade erzeugt und innerhalb von <g>-Elementen positioniert und gestaltet.
| DOM-Manipulation | Builder API |
|---|---|
| Manuelle Attributverwaltung | Stark typisierte Methoden |
| Ausführlicherer Code | Fluent Method Chaining |
| Schwerer zu warten | Besser lesbar |
| Wiederholte XML-Operationen | Wiederverwendbare Builder-Logik |
1. Warum verwenden Entwickler Builder APIs statt direkter XML-Erzeugung?
Builder APIs ersetzen manuelle XML-Erzeugung durch typisierte Fluent-Methoden und machen SVG-Code leichter lesbar, wartbar und erweiterbar.
2. Ist das generierte SVG standardkonform?
Ja. Aspose.SVG erzeugt standardbasiertes SVG-Markup, das mit modernen SVG-Rendering-Engines kompatibel ist.
3. Kann ich mit Element Builders interaktive SVG-Grafiken erzeugen?
Ja. Erzeugte SVG-Elemente können später in Webanwendungen mit CSS und JavaScript gestaltet, animiert oder manipuliert werden.
4. Können generierte SVG-Grafiken direkt in HTML-Seiten eingebettet werden?
Ja. Mit Aspose.SVG erstellte SVG-Dokumente können inline in HTML eingebettet oder als eigenständige SVG-Dateien verwendet werden.
| Problem | Mögliche Ursache | Empfohlene Lösung |
|---|---|---|
| SVG-Element ist nicht sichtbar | Fehlende Füllung oder Kontur | Fill() oder Stroke() anwenden |
| SVG-Änderungen werden nicht gespeichert | Dokument wurde nach der Änderung nicht gespeichert | Nach Updates document.Save() aufrufen |
| Elemente liegen außerhalb der Zeichenfläche | Falsche Koordinaten oder falsche viewBox | SVG-Abmessungen und Positionen prüfen |
| Vorhandenes Element wird nicht aktualisiert | Falsche Elementreferenz | Sicherstellen, dass das Zielelement korrekt abgerufen wurde |
| Formen erscheinen verzerrt | Ungültige viewBox-Proportionen | Konsistente SVG-Koordinatensysteme verwenden |
stroke oder fill für verschiedene SVG-Formen und -Elemente beim Füllen mit Farbe, Mustern oder Gradienten anzugeben.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.