Element Builder – SVG-Elemente erstellen und bearbeiten – C#

Element-Builder in Aspose.SVG

Element Builder sind Softwarekonstrukte oder Klassen, die das Erstellen oder Ändern von SVG-Elementen erleichtern sollen. Diese Builder folgen in der Regel Entwurfsmustern wie dem Fluent Builder-Muster, das eine flüssige und ausdrucksstarke Syntax beim Definieren der Attribute und der Struktur von SVG-Elementen bietet.

In der Aspose.SVG Builder-API erben alle Element-Builder, wie etwa SVGSVGElementBuilder, SVGGElementBuilder und andere, von der Kernklasse SVGElementBuilder. Diese Vererbungsstruktur rationalisiert den Prozess der Erstellung und Änderung von SVG-Elementen und gewährleistet Konsistenz und Effizienz über verschiedene Elementtypen hinweg.

Element-Builder stellen die Methode Build(Document document) zur Verfügung, die die Erstellung neuer SVG-Elemente und deren Hinzufügung zu einem SVG-Dokument ermöglicht, sowie die Methode Build(T element) zum Aktualisieren vorhandener Elemente SVG-Elemente.

Dieser Artikel befasst sich mit den Element Buildern, die in der Aspose.SVG Builder API verwendet werden. Sie werden ihre Effizienz bei der SVG-Manipulation sehen. Sie erfahren mehr über die SVGSVGElementBuilder-Klasse, ihre speziellen Builder und wie sie die SVG-Programmierung vereinfachen.

Neue Elemente erstellen

Die Aspose.SVG SVG Builder API verwendet das Fluent Builder-Muster, eine Designmethodik, die perfekt auf den Bedarf nach Einfachheit, Klarheit und Vielseitigkeit bei der SVG-Manipulation abgestimmt ist.

Fluent Builder-Muster

In der SVG Builder API wird das Fluent Builder-Muster verwendet, um die Erstellung und Aktualisierung von SVG-Elementen zu vereinfachen und den Prozess intuitiv und weniger fehleranfällig zu machen. Der Kern dieses Musters sind Methoden, die ein SVG-Element konfigurieren und dann ein “builder object” zurückgeben. Dieses Design bietet eine konsistente und kohärente Möglichkeit, Methoden zu verknüpfen, was besonders effektiv zur Reduzierung der Komplexität bei der Erstellung und Verwaltung von SVG-Elementen beiträgt.

In diesem Zusammenhang werden Lambda-Ausdrücke verwendet, um die Klarheit und Prägnanz der Konfigurationsmethoden des Builders zu verbessern. Mit Lambda-Ausdrücken können Sie die Attribute und Stile von SVG-Elementen detailliert und dennoch kompakt definieren. Wenn Sie beispielsweise ein Kreiselement hinzufügen, stellt der Lambda-Ausdruck eine inline lesbare Konfiguration bereit:

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();

Hier ist circle => circle.Cx(100).Cy(100).R(50).Fill(Color.Red).Stroke(Paint.None).StrokeWidth(2) eine prägnante Möglichkeit, die Kreise zu konfigurieren Eigenschaften wie Mittelpunkt, Radius, Füllung und Strich. Dieser Ansatz vereinfacht nicht nur die Elementkonfiguration, sondern verbessert auch die Lesbarkeit und Wartbarkeit des Codes.

Erstellen Sie SVG von Grund auf

Hier werden wir einen prägnanten und eleganten Ansatz zur Erstellung von SVGs von Grund auf mit C# erkunden.

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

Das Beispiel verwendet ein Fluent Builder-Muster in SVGSVGElementBuilder, um die SVG-Elemente zu erstellen. Dieses Muster bietet eine ausdrucksstarke und wartbare Möglichkeit zum Generieren von SVG-Dokumenten im Vergleich zu dem im Artikel SVG-Datei bearbeiten beschriebenen Ansatz, der mehr auf DOM-Manipulation auf niedriger Ebene und expliziter Attributeinstellung basiert.

Text „svg-from-scratch.svg-Dateivisualisierung“

Daher bietet die SVG Builder API eine flexible und effiziente Möglichkeit, Vektorgrafiken in C# zu generieren. Durch die Nutzung der Element Builder und des Builder-Patterns können Sie den Prozess der SVG-Erstellung von Grund auf optimieren. Dieser Ansatz:

SVG bearbeiten

Eine leistungsstarke Technik zum programmgesteuerten Bearbeiten von SVGs ist die Verwendung von Element Buildern.

Neue Elemente hinzufügen

Das Bearbeiten von SVGs mithilfe von Element-Buildern bietet einen leistungsstarken und flexiblen Ansatz zur programmgesteuerten Bearbeitung von Vektorgrafiken. Im folgenden Beispiel nehmen wir eine vorhandene SVG-Datei, fügen ihr einige Elemente hinzu und speichern sie:

 1using Aspose.Svg.Builder;
 2using System.Drawing;
 3using System.IO;
 4...
 5    string documentPath = Path.Combine(DataDir, "circles.svg");
 6
 7    using (var document = new SVGDocument(documentPath))
 8    {
 9        // Create a new <g> (group) element using SVGGElementBuilder and set attributes
10        var gElement = new SVGGElementBuilder()
11            .Fill(Paint.None).Stroke(Color.FromArgb(80, 132, 132)).StrokeWidth(10)
12
13            // Add <circle> and <polyline> element configurations
14            .AddCircle(c => c.Cx(350).Cy(70).R(50))
15            .AddPolyline(points: new double[] { 125, 130, 275, 180, 425, 130 })
16            .Build(document);
17
18        // Append the newly created <g> element to the root <svg> element
19        document.RootElement.AppendChild(gElement);
20
21        // Save the document
22        document.Save(Path.Combine(OutputDir, "circles-edited.svg"));
23    }

In diesem Beispiel:

Abbildung (a) zeigt eine Visualisierung der ursprünglichen Datei circles.svg und Abbildung (b) zeigt ein Bild der bearbeiteten Datei circles-edited.svg mit hinzugefügten Kreis- und Polylinienelementen.

Text “Visualisierung der ursprünglichen Datei circles.svg (a) und der bearbeiteten Datei circles-edited.svg mit hinzugefügten Kreis- und Polylinienelementen (b).”

Vorhandene Elemente ändern

Im folgenden C#-Beispiel aktualisieren wir ein vorhandenes SVG-Dokument, indem wir die Füll- und Strichfarbe des ersten SVG-Elements <circle> im Dokument ändern:

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

Element-Builder bieten die Methode Build(T element) zum Aktualisieren vorhandener SVG-Elemente und ermöglichen Änderungen an deren Attributen oder Stilen. Abbildung (a) zeigt die ursprüngliche Datei circles.svg und Abbildung (b) zeigt ein Bild der geänderten Datei circles-modified.svg mit dem neu eingefärbten ersten Kreiselement.

Text “Visualisierung der ursprünglichen Datei circles.svg (a) und der geänderten Datei circles-modified.svg mit neu eingefärbtem ersten Kreiselement (b).”

Beispiel für die Verwendung von Element Buildern

Der folgende Codeausschnitt zeigt, wie Sie mithilfe von Element-Buildern ein SVG-Dokument mit verschiedenen SVG-Formelementen erstellen.

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

Text “Visualisierung der Datei svg-elements.svg mit Namen und Bildern der 7 SVG-Formelemente.”

Element-Builder bieten eine flüssige und ausdrucksstarke Syntax zum Erstellen von SVG-Elementen und verbessern so die Lesbarkeit und Wartbarkeit des Codes. In diesem Beispiel wird der Element-Builder wie SVGSVGElementBuilder verwendet, um ein SVG-Element mit den Attributen width, height und viewBox zu erstellen. Das Fluent Builder-Muster wird dann verwendet, um Formen wie Rechtecke, Kreise, Ellipsen, Linien, Polylinien, Polygone und Pfade zu erstellen, die jeweils innerhalb von <g>-Elementen entsprechend positioniert und gestaltet werden.

Siehe auch

  • Im Artikel SVG-Datei bearbeiten erfahren Sie, wie Sie SVG mit der Bibliothek Aspose.SVG für .NET bearbeiten und betrachten detaillierte C#-Beispiele zum Hinzufügen von Elementen zu einer SVG dokumentieren und bearbeiten.
  • Bitte besuchen Sie den Artikel Path Builder, um zu erfahren, wie Sie Path Builder verwenden, um SVG-Pfade programmgesteuert zu erstellen, eine Gruppe von Befehlen zum Zeichnen verschiedener Umrisse oder Formen durch die Kombination von SVG-Linien, SVG-Bögen und Bezier-Kurven . – Im Artikel Rule Builder geht es um die RuleBuilder-Klasse, eine Builder-Klasse zum Erstellen von CSS-Stilregeln in einem SVG-Dokument.
  • Im Artikel Paint Builder geht es um PaintBuilder, eine Builder-Klasse zum Erstellen von Farbwerten für SVG-Elemente. Diese Klasse wird verwendet, um den Wert der Attribute stroke oder fill für verschiedene SVG-Formen und -Elemente anzugeben, wenn diese mit Farbe, Muster oder Farbverlauf gefüllt werden.
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.