Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Los documentos SVG admiten estilos CSS mediante el elemento <style>, lo que permite aplicar reglas visuales reutilizables a gráficos SVG. Con Aspose.SVG Builder API, puede configurar estilos SVG mediante programación en C# sin escribir cadenas CSS manualmente.
Este artículo explica cómo crear reglas de estilo SVG en C#, aplicar selectores CSS a elementos SVG, configurar fuentes personalizadas y administrar estilos SVG reutilizables mediante programación usando Aspose.SVG for .NET.
RuleBuilder forma parte de Aspose.SVG Builder API y se utiliza para configurar declaraciones CSS para reglas de estilo SVG mediante programación. Junto con SVGStyleElementBuilder, permite a los desarrolladores:
<style>;Usar reglas CSS centralizadas simplifica el mantenimiento de SVG y reduce el código de estilo duplicado.
Aspose.SVG Builder API ofrece la clase
SVGStyleElementBuilder, que es un generador de elementos para construir un elemento SVG <style>. Esta clase facilita la creación y configuración de un elemento SVG <style> con reglas CSS.
Este ejemplo muestra cómo crear un elemento SVG <style>, agregarle una regla CSS @font-face y usar el método
AddRule() para definir estilos de fuente para elementos de texto dentro de un documento SVG:
1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO; 1// Configure an SVG document's style with external font-face rules in C# using Rule Builder
2
3// Initialize an SVG document
4using (SVGDocument document = new SVGDocument())
5{
6 // Create an <svg> element and use Builder API to add other rules and elements to it
7 SVGSVGElement svg = new SVGSVGElementBuilder()
8
9 .AddDefs(def => def
10 .AddStyle(st => st
11 .Type("text/css")
12 .AddRule("@font-face", r => r
13 .FontFamily("VeinlineRegular")
14 .Attribute("src", "url(https://assets.ithillel.ua/wiki/VeinlineRegular.ttf)")
15 )
16 .AddRule("text", t => t
17 .FontFamily("VeinlineRegular")
18 .FontSize(30, LengthType.Pt)
19 )
20 )
21 )
22 .AddText(t => t
23 .X(20).Y(60).Fill(Color.DarkRed).FontWeight(FontWeight.Bold)
24 .AddContent("Configure SVG Style")
25 )
26 .AddText(t => t
27 .X(20).Y(150)
28 .AddContent("Set your SVG style with Rule Builder!")
29 )
30 .Build(document.FirstChild as SVGSVGElement);
31
32 // Save the SVG document
33 document.Save(Path.Combine(OutputDir, "font-face.svg"));
34}
La regla CSS @font-face permite especificar fuentes para mostrar texto que pueden descargarse desde un servidor remoto o desde el equipo del usuario. La regla define un nombre de familia de fuentes personalizado y especifica la URL de origen del archivo de fuente.
font-family en la regla de estilo generada. Especifica el nombre de fuente que se usará para los elementos de texto coincidentes.RuleBuilder establece el descriptor CSS src dentro de la regla @font-face con la URL de origen del archivo de fuente.En el ejemplo anterior, la regla @font-face define una familia de fuentes personalizada llamada "VeinlineRegular". Esta regla garantiza que la fuente se cargue y esté disponible para su uso dentro del documento SVG.
El método
AddRule() pertenece a SVGStyleElementBuilder y permite crear reglas CSS en documentos SVG. Toma dos parámetros: el nombre del selector CSS y una expresión lambda que define las propiedades del estilo usando RuleBuilder.
En el ejemplo de C# anterior, se agregan dos reglas:
SVG Builder API introduce azúcar sintáctico (syntactic sugar) para refinar aún más el proceso de creación и manipulación de SVG. Esto incluye constructores anidados para varios elementos SVG, lo que proporciona una forma más intuitiva и eficiente de definir estructuras SVG complejas. El patrón «builder within a builder» implica el uso de varias clases de constructores, donde uno se anida dentro de otro para facilitar la construcción de objetos o estructuras complejos.
El siguiente fragmento muestra cómo usar RuleBuilder, un ejemplo de builder dentro de otro builder, para crear y aplicar estilos a gráficos SVG mediante programación:
SVGStyleElementBuilder define reglas CSS por selector, por ejemplo “circle” o “text”. Dentro de cada expresión lambda,
RuleBuilder configura declaraciones como color de relleno, color de trazo y familia de fuentes para los elementos SVG coincidentes.1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO; 1// Create SVG with styled circle and text elements using C# Rule Builder API and fluent syntax
2
3// Initialize an SVG document
4using (SVGDocument document = new SVGDocument())
5{
6 // Create an <svg> element and use Builder API to add other rules and elements to it
7 SVGSVGElement svg = new SVGSVGElementBuilder()
8
9 .AddStyle(st => st
10 .AddRule("circle", r => r
11 .Fill(paint: Paint.None)
12 .Stroke(color: Color.DarkRed)
13 .StrokeWidth(60)
14 )
15 .AddRule("text", t => t
16 .Fill(color: Color.Red)
17 .Stroke(color: Color.Teal)
18 .StrokeWidth(1)
19 .FontFamily("Arial")
20 .FontSize(30, LengthType.Pt)
21 )
22 )
23 .AddG(g => g
24 .AddCircle(circle => circle.Cx(100).Cy(130).R(60).StrokeDashArray(2, 14))
25 .AddText("Rule Builder", x: 230, y: 140)
26 )
27 .Build(document.FirstChild as SVGSVGElement);
28
29 // Save the SVG document
30 document.Save(Path.Combine(OutputDir, "rule-builder.svg"));
31}El método AddRule() crea reglas CSS reutilizables dentro del elemento SVG <style>. En este ejemplo:
"circle" aplica estilo a todos los círculos SVG;"text" configura la tipografía para el texto SVG;Este enfoque separa la lógica de estilo de la estructura SVG y mejora la legibilidad del SVG.
| Problema | Posible causa | Solución recomendada |
|---|---|---|
| Los estilos SVG no se aplican | Selector CSS incorrecto | Asegúrese de que AddRule() apunte al elemento SVG correcto |
| La fuente personalizada no se muestra | URL de fuente no válida | Verifique la ruta y accesibilidad del archivo de fuente |
| El texto se renderiza distinto entre sistemas | La fuente requerida no está disponible | Use fuentes incrustadas o cargadas desde web |
| Los elementos SVG ignoran reglas de estilo | Los atributos inline sobrescriben CSS | Quite estilos inline en conflicto |
| Faltan estilos de trazo o relleno | Configuración de propiedad incorrecta | Verifique las reglas Fill() y Stroke() |
1. ¿RuleBuilder es mejor que el estilo SVG inline?
Para gráficos SVG complejos, las reglas CSS reutilizables suelen ser más fáciles de mantener que atributos inline repetidos. Rule Builder ayuda a centralizar la lógica de estilo SVG y reducir código duplicado.
2. ¿Puedo aplicar estilos a clases e IDs SVG con RuleBuilder?
Sí. AddRule() admite selectores CSS estándar, incluidos selectores de elemento, clase e ID.
3. ¿Por qué usar reglas CSS dentro del SVG en lugar de archivos CSS externos?
Los estilos SVG embebidos hacen que los gráficos SVG sean autocontenidos y más fáciles de reutilizar en aplicaciones, exportaciones y archivos SVG independientes.
4. ¿Puedo reutilizar el mismo bloque de estilo SVG para varios elementos?
Sí. Un único bloque SVG <style> puede aplicar reglas reutilizables a varios elementos SVG mediante selectores compartidos.
stroke o fill para diversas formas и elementos SVG al rellenarlos con pintura, patrones o degradados.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.