So ändern Sie die SVG-Farbe – C#-Beispiele
Mit Aspose.SVG für .NET API können Sie ein SVG-Dokument bearbeiten und Änderungen an seinem Inhalt vornehmen. Die Verwendung von Farbe ist ein wesentlicher Bestandteil der SVG-Erstellung. Sie können SVG-Formen, Linien, Pfade und Text einfärben. Anhand von C#-Beispielen werden wir uns mit Möglichkeiten befassen, Farben in SVG-Dateien anzuwenden. In diesem Artikel zeigen wir, wie Sie mit der Aspose.SVG für .NET-Bibliothek mit SVG-Farben arbeiten und betrachten, wie man die Farbe von SVG-Elementen oder die Hintergrundfarbe in SVG-Dateien ändert.
Wie Sie neue SVG-Elemente hinzufügen und ihre Farbeigenschaften festlegen, haben wir ausführlich in C#-Beispielen im Artikel SVG-Dateien bearbeiten behandelt.
Im Artikel SVG-Farbe wird untersucht, wie SVG-Texte und -Formen eingefärbt werden können. Sie finden einen Überblick darüber, wie Farbe definiert wird, einschließlich der verschiedenen Möglichkeiten, die Transparenz von SVG-Inhalten zu steuern.
SVG-Farbe ändern
Füllen und Streichen sind beides Vorgänge zum Färben von SVG-Elementen. Alle grafischen Elemente wie Formen, Pfade und Text werden durch Füllen gerendert. Die Füllung malt das Innere des Objekts und der Strich malt entlang seiner Umrisse. SVG stroke und SVG fill sind einige der wichtigsten CSS-Eigenschaften, die für alle Linien, Texte und Formen festgelegt werden können. Weitere Informationen zu den Eigenschaften von Stilattributen finden Sie im Artikel Füllungen und Striche in SVG.
Mit der Aspose.SVG-API können Sie die Farbe verschiedener SVG-Elemente in einem SVG-Dokument ändern. Zuerst laden Sie ein vorhandenes SVG-Dokument und können dann die Farbe des erforderlichen SVG-Elements ändern:
Verwenden Sie einen der SVGDocument()-Konstruktoren der SVGDocument-Klasse, um ein vorhandenes SVG-Dokument zu laden.
Verwenden Sie den QuerySelector(
selector
), um das gewünschte Element im SVG-Dokument zu finden. Mit der QuerySelector(selector
)-Methode der Element-Klasse können Sie das erste Element im Dokument abrufen, das mit dem angegebenen Selektor übereinstimmt. An den resultierenden Elementen können Sie verschiedene Manipulationen vornehmen: ihre Attribute, CSS-Stile usw. ändern.Verwenden Sie die Methode SetAttribute(
name, value)
der Klasse Element, um die Elementattributefill
oderstroke
anzugeben.
Kreisfarbe
Um die Kreisfarbe zu ändern, sollten Sie einige Schritte befolgen:
- Öffnen Sie eine SVG-Quelldatei.
- Stamm-SVG-Element des Dokuments abrufen.
- Holen Sie sich das Kreiselement, um die Farbe zu ändern.
- Legen Sie einen neuen Attributwert fill oder stroke für das Kreiselement fest.
- Speichern Sie das SVG-Dokument.
Der folgende Codeausschnitt zeigt, wie die Kreisfarbe für das erste SVG-Kreiselement in der in Abbildung (a) unten gezeigten Datei basic-shapes.svg geändert wird:
1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Dom;
4...
5
6 // Prepare a path to a file loading
7 string documentPath = Path.Combine(DataDir, "basic-shapes.svg");
8
9 // Load an SVG document from the file
10 var document = new SVGDocument(documentPath);
11
12 // Get root svg element of the document
13 var svgElement = document.RootElement;
14
15 // Get circle element to change color
16 var circleElement = svgElement.QuerySelector("circle") as SVGCircleElement;
17
18 // Set a new "fill" attribute value for the circle element
19 circleElement.SetAttribute("fill", "green");
20
21 // Save the SVG document to a file
22 document.Save(Path.Combine(OutputDir, "circle-color.svg"));
Linienfarbe
Um die Linienfarbe zu ändern, sollten Sie ähnliche Schritte ausführen. Das folgende C#-Beispiel zeigt, wie die Linienfarbe für das erste SVG-Linienelement in der Datei basic-shapes.svg geändert wird:
1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Dom;
4...
5
6 // Set SVG Namespace Url
7 string SvgNamespace = "http://www.w3.org/2000/svg";
8
9 // Prepare a path to a file loading
10 string documentPath = Path.Combine(DataDir, "basic-shapes.svg");
11
12 // Load an SVG document from the file
13 var document = new SVGDocument(documentPath);
14
15 // Get root svg element of the document
16 var svgElement = document.RootElement;
17
18 // Get line element to change color
19 var lineElement = svgElement.QuerySelector("line") as SVGLineElement;
20
21 // Set a new "stroke" attribute value for the line element
22 lineElement.SetAttribute("stroke", "green");
23
24 // Save the SVG document
25 document.Save(Path.Combine(OutputDir, "line-color.svg"));
Die folgende Abbildung zeigt das Originalbild (a) und Bilder mit SVG-Farbänderungen für den Kreis (b) und die Linie (c).
Das Attribut fill legt die Farbe des SVG-Kreises fest (Abbildung b). In der resultierenden Datei „circle-color.svg“ ändert sich die Farbe des Kreises von Rot (im Original) zu Grün. Das Attribut stroke legt die Farbe der SVG-Linie fest. In der resultierenden line-color.svg-Datei (Abbildung c) ändert sich die Linienfarbe von Grau zu Grün. Ebenso können Sie die Farbe verschiedener SVG-Grafikelemente wie Formen, Pfade und Text mithilfe des Attributs fill oder stroke ändern.
Hintergrundfarbe ändern
Um die Hintergrundfarbe auf ein SVG-Bild festzulegen, sollten Sie ein neues SVG-Element wie einen Kreis oder ein Rechteck als erstes untergeordnetes Element in einem SVG-Dokument hinzufügen. Denn die Regel für die Reihenfolge der angezeigten SVG-Elemente lautet: Spätere Elemente im Code werden über den vorherigen angezeigt.
Der folgende Codeausschnitt zeigt, wie man ein neues SVG-Rechteck als Hintergrund für ein SVG-Bild erstellt und es einfärbt:
1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Dom;
4...
5
6 // Set SVG Namespace Url
7 string SvgNamespace = "http://www.w3.org/2000/svg";
8
9 string documentPath = Path.Combine(DataDir, "basic-shapes.svg");
10
11 // Load an SVG document from the file
12 var document = new SVGDocument(documentPath);
13
14 // Get root svg element of the document
15 var svgElement = document.RootElement;
16
17 // Create a rectangle element and set the "fill" attribute value to change background color
18 var rectElement = (SVGRectElement)document.CreateElementNS(SvgNamespace, "rect");
19 rectElement.X.BaseVal.Value = 3;
20 rectElement.Y.BaseVal.Value = 3;
21 rectElement.Width.BaseVal.Value = 400;
22 rectElement.Height.BaseVal.Value = 400;
23 rectElement.SetAttribute("fill", "Salmon");
24
25 // Add the rectangle element as the first child to svg element
26 svgElement.InsertBefore(rectElement, svgElement.FirstChild);
27
28 // Save the SVG document
29 document.Save(Path.Combine(OutputDir, "change-background-color.svg"));
Die Abbildung zeigt die Visualisierung der ursprünglichen SVG-Datei basic-shapes.svg und derselben Datei mit der hinzugefügten Hintergrundfarbe.
Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen. Informationen zum Herunterladen von GitHub und zum Ausführen von Beispielen finden Sie im Abschnitt So führen Sie die Beispiele aus.
SVG neu einfärben
Lass uns eine Schneeflocke zeichnen! Das folgende C#-Beispiel zeigt, wie man eine SVG-Schneeflocke zeichnet und sie neu einfärbt. Sie können diesen Ansatz für jedes SVG-Bild verwenden: Ändern Sie die Farbe des erforderlichen SVG-Elements und ändern Sie die Hintergrundfarbe:
1using Aspose.Svg;
2using System.IO;
3using Aspose.Svg.Dom;
4...
5
6 // Set SVG Namespace Url
7 string SvgNamespace = "http://www.w3.org/2000/svg";
8
9 string documentPath = Path.Combine(DataDir, "snowflake-blue.svg");
10
11 // Load an SVG document from the file
12 var document = new SVGDocument(documentPath);
13
14 // Get root svg element of the document
15 var svgElement = document.RootElement;
16
17 // Create a circle element and set the "fill" attribute value to change background color
18 var circleElement = (SVGCircleElement)document.CreateElementNS(SvgNamespace, "circle");
19 circleElement.Cx.BaseVal.Value = 150F;
20 circleElement.Cy.BaseVal.Value = 100F;
21 circleElement.R.BaseVal.Value = 150F;
22 circleElement.SetAttribute("fill", "#03b6fd");
23
24 // Add the circle element (background) as the first child to svg element
25 svgElement.InsertBefore(circleElement, svgElement.FirstChild);
26
27 // Get the first path element to change color
28 var snowflakePath = svgElement.QuerySelector("path") as SVGPathElement;
29
30 // Set a new "stroke" attribute value for the path element
31 snowflakePath.SetAttribute("stroke", "white");
32
33 // Save the SVG document
34 document.Save(Path.Combine(OutputDir, "recolor-svg.svg"));
Die Abbildung zeigt die Visualisierung der ursprünglichen SVG-Datei snowflake-blue.svg und der umgefärbten Datei.
Color Converter ist eine kostenlose Online-Anwendung zum Konvertieren von Farben zwischen Farbformaten. Geben Sie einfach den Farbcode ein und erhalten Sie sofort das Ergebnis! Sie benötigen keine zusätzliche Software. Probieren Sie jetzt unseren leistungsstarken Farbkonverter aus!