Rule Builder – Configurar estilo SVG – C#
Estilo SVG – SVG Style
El elemento SVG <style>
se utiliza para definir estilos internos dentro de un documento SVG. Permite a los desarrolladores aplicar reglas CSS directamente a elementos SVG, proporcionando una forma conveniente de controlar la apariencia de los gráficos SVG.
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 artículo trata sobre la clase RuleBuilder, que es una clase constructora para construir reglas de estilo CSS. Esta clase se utiliza para crear dinámicamente una cadena de estilos CSS estableciendo varios atributos y sus valores.
Rule Builder – clase RuleBuilder
Rule Builder permite a los desarrolladores aplicar reglas CSS para documentos SVG mediante programación dentro del código C#, ofreciendo flexibilidad y control sobre la apariencia visual de los elementos SVG. 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;
4...
5
6 using (var document = new SVGDocument())
7 {
8 var svg = new SVGSVGElementBuilder()
9
10 .AddDefs(def => def
11 .AddStyle(st => st
12 .Type("text/css")
13 .AddRule("@font-face", r => r
14 .FontFamily("VeinlineRegular")
15 .Attribute("src", "url(https://assets.ithillel.ua/wiki/VeinlineRegular.ttf)")
16 )
17 .AddRule("text", t => t
18 .FontFamily("VeinlineRegular")
19 .FontSize(30, LengthType.Pt)
20 )
21 )
22 )
23 .AddText(t => t
24 .X(20).Y(60).Fill(Color.DarkRed).FontWeight(FontWeight.Bold)
25 .AddContent("Configure SVG Style")
26 )
27 .AddText(t => t
28 .X(20).Y(150)
29 .AddContent("Set your SVG style with Rule Builder!")
30 )
31 .Build(document.FirstChild as SVGSVGElement);
32 document.Save(Path.Combine(OutputDir, "font-face.svg"));
33 }
Regla @font-face
La regla CSS @font-face le permite especificar fuentes para mostrar texto en páginas web que se pueden descargar desde un servidor remoto o desde la computadora del usuario. La regla define un nombre de familia de fuentes personalizado y especifica la URL de origen del archivo de fuentes.
- El método
FontFamily() establece el atributo
font-family
para un elemento SVG. Especifica el nombre de la fuente que se utilizará para establecer las propiedades de la fuente. - El método
Attribute() de la clase
RuleBuilder
establece un atributoscr
para el elemento<style>
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 esté cargada y disponible para su uso dentro del documento SVG.
Método AddRule()
El método
AddRule() es parte del Generador de reglas, que le permite crear reglas CSS en documentos SVG. Se necesitan dos parámetros: el nombre del selector CSS y una expresión lambda que define las propiedades del estilo usando RuleBuilder
.
- La primera regla define la regla @font-face, que garantiza la disponibilidad de la fuente VeinlineRegular.
- La segunda regla aplica la familia de fuentes VeinlineRegular y establece el tamaño de fuente en 30 puntos para todos los elementos de texto en SVG.
En el ejemplo de C# anterior, se agregan dos reglas:
Constructores dentro de Constructores
SVG Builder API introduce azúcar de sintaxis para refinar aún más el proceso de creación y manipulación de SVG. Esto incluye constructores anidados para varios elementos SVG, lo que proporciona una forma más intuitiva y eficiente de definir estructuras SVG complejas. Un patrón de “builder within a builder” implica el uso de múltiples clases de constructores, donde un constructor está anidado dentro de otro para facilitar la construcción de estructuras o objetos complejos.
El siguiente fragmento de código demuestra cómo utilizar RuleBuilder
, que es un ejemplo de un constructor dentro de un constructor, para crear y diseñar gráficos SVG mediante programación:
- Dentro del SVGSVGElementBuilder, se agrega un bloque de estilo usando el método AddStyle().
- Dentro de RuleBuilder, las reglas CSS se definen usando el método AddRule(), especificando selectores (por ejemplo, “circle”, “text”) y aplicando propiedades (por ejemplo, fill color, stroke color, font family) para apuntar a elementos SVG.
1using Aspose.Svg.Builder;
2using System.Drawing;
3using System.IO;
4...
5 // Initialize an SVG document
6 using (var document = new SVGDocument())
7 {
8 // Create an <svg> element
9 var svg = new SVGSVGElementBuilder()
10
11 .AddStyle(st => st
12 .AddRule("circle", r => r
13 .Fill(paint: Paint.None)
14 .Stroke(color: Color.DarkRed)
15 .StrokeWidth(60)
16 )
17 .AddRule("text", t => t
18 .Fill(color: Color.Red)
19 .Stroke(color: Color.Teal)
20 .StrokeWidth(1)
21 .FontFamily("Arial")
22 .FontSize(30, LengthType.Pt)
23 )
24 )
25 .AddG(g => g
26 .AddCircle(circle => circle.Cx(100).Cy(130).R(60).StrokeDashArray(2, 14))
27 .AddText("Rule Builder", x: 230, y: 140)
28 )
29 .Build(document.FirstChild as SVGSVGElement);
30
31 // Save the SVG document
32 document.Save(Path.Combine(OutputDir, "rule-builder.svg"));
33 }
Conclusión
Aspose.SVG for .NET proporciona una función de Generador de reglas que permite a los desarrolladores definir mediante programación reglas CSS para elementos SVG utilizando la API SVG Builder.
- El uso de la clase RuleBuilder simplifica el proceso de creación y aplicación de estilos a elementos SVG, lo que facilita la personalización de la apariencia de los gráficos SVG en código C#.
RuleBuilder
proporciona flexibilidad y control sobre la apariencia visual de los elementos SVG.RuleBuilder
funciona como un constructor dentro de un constructor, lo que facilita la creación de objetos o estructuras complejos y mejora la legibilidad del código, haciéndolo más fácil de entender.
Ver también
- El artículo Element Builders profundiza en los Element Builders utilizados en SVG Builder API. Aprenderá sobre la clase SVGElementBuilder, sus constructores especializados y cómo simplifican la programación SVG.
- Consulte el artículo Path Builder para obtener más información sobre la clase PathBuilder, diseñada para simplificar la creación y manipulación de rutas SVG. El artículo muestra cómo Path Builder ofrece una sintaxis intuitiva para definir rutas SVG mediante programación, lo que permite a los desarrolladores agilizar el proceso de creación de formas y curvas intrincadas.
- El artículo
Paint Builder trata sobre PaintBuilder, una clase de creación para crear valores de pintura para elementos SVG. Esta clase se utiliza para especificar el valor de los atributos
stroke
ofill
para varias formas y elementos SVG al rellenarlos con pintura, patrón o degradado.