Cómo cambiar el color de SVG – Ejemplos de C#

Aspose.SVG for .NET API le permite editar un documento SVG y realizar cambios en su contenido. Usar color es una parte esencial de la creación de SVG. Puede colorear formas, líneas, trazados y texto SVG. Usando ejemplos de C#, veremos formas de aplicar colores en archivos SVG. En este artículo, mostramos cómo trabajar con color SVG usando Aspose.SVG para la biblioteca .NET y consideramos cómo cambiar el color de los elementos SVG o el color de fondo en archivos SVG.

Cómo agregar nuevos elementos SVG y establecer sus propiedades de color, cubrimos en detalle ejemplos de C# en el artículo Editar archivos SVG.

El artículo Color SVG analiza cómo se pueden colorear el texto y las formas SVG. Encontrará una descripción general de cómo se define el color, incluidas las diversas formas en que puede controlar la transparencia del contenido SVG.

Cambiar color SVG

Rellenar y acariciar son operaciones para colorear elementos SVG. Todos los elementos gráficos, como formas, trazados y texto, se representan mediante relleno. El relleno pinta el interior del objeto y el trazo pinta a lo largo de su contorno. SVG stroke y SVG fill son algunas de las principales propiedades CSS que se pueden configurar para cualquier línea, texto y forma. Para obtener más información sobre las propiedades de los atributos de estilo, consulte el artículo Rellenos y trazos en SVG.

La API Aspose.SVG le permite cambiar el color de varios elementos SVG en un documento SVG. Primero, cargaría un documento SVG existente y luego puede cambiar el color del elemento SVG requerido:

  1. Utilice uno de los constructores SVGDocument() de la clase SVGDocument para cargar un documento SVG existente.

  2. Utilice QuerySelector(selector) para encontrar el elemento deseado en el documento SVG. El método QuerySelector(selector) de la clase Element le permite obtener el primer elemento dentro del documento que coincide con el selector especificado. Con los elementos resultantes, puedes realizar varias manipulaciones: cambiar sus atributos, estilos CSS, etc.

  3. Utilice el método SetAttribute(name, value) de la clase Element para especificar los atributos del elemento fill o stroke.

Color del círculo

Para cambiar el color del círculo, debes seguir algunos pasos:

El siguiente fragmento de código muestra cómo cambiar el color del círculo para el primer elemento de círculo SVG en el archivo basic-shapes.svg que se muestra en la Figura (a) a continuación:

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

Color de línea

Para cambiar el color de la línea, debes seguir pasos similares. El siguiente ejemplo de C# muestra cómo cambiar el color de la línea para el primer elemento de línea SVG en el archivo basic-shapes.svg:

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

La siguiente figura muestra la imagen original (a) y las imágenes con cambios de color SVG para el círculo (b) y la línea (c).

Texto “Imagen svg original (a) e imagen svg con color cambiado para los elementos de círculo (b) y línea (c)”

El atributo fill establece el color del círculo SVG (Figura b). En el archivo círculo-color.svg resultante, el color del círculo cambia de rojo (en el original) a verde. El atributo stroke establece el color de la línea SVG. En el archivo line-color.svg resultante (Figura c), el color de la línea cambia de gris a verde. De manera similar, puedes cambiar el color de varios elementos gráficos SVG, como formas, trazados y texto, usando el atributo fill o stroke.

Cambiar color de fondo

Para establecer el color de fondo de una imagen SVG, debe agregar un nuevo elemento SVG, como un círculo o un rectángulo, como primer elemento secundario en un documento SVG. Porque la regla sobre el orden en que se muestran los elementos SVG es: los elementos posteriores en el código se muestran encima de los anteriores.

El siguiente fragmento de código muestra cómo crear un nuevo rectángulo SVG como fondo para una imagen SVG y colorearlo:

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

La figura muestra la visualización del archivo SVG original basic-shapes.svg y el mismo archivo con el color de fondo agregado.

Texto “Imagen svg original e imagen svg con nuevo color de fondo”

Puede descargar los ejemplos completos y los archivos de datos desde GitHub. Encontrará información sobre la descarga desde GitHub y la ejecución de ejemplos en la sección Cómo ejecutar los ejemplos.

Recolorear SVG

¡Dibujemos un copo de nieve! El siguiente ejemplo de C# muestra cómo dibujar un copo de nieve SVG y cambiarle el color. Puede utilizar este enfoque para cualquier imagen SVG: cambie el color del elemento SVG requerido y cambie el color de fondo:

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

La figura muestra la visualización del archivo SVG original snowflake-blue.svg y el archivo recoloreado.

Texto “Imagen svg de copo de nieve original e imagen svg de copo de nieve recoloreada”

Conversor de color es una aplicación en línea gratuita para transformar colores entre formatos de color. ¡Simplemente ingrese el código de color y obtenga el resultado de inmediato! No necesitas ningún software adicional. ¡Pruebe nuestro contundente convertidor de colores ahora mismo!

Texto “Conversor de color”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.