Rule Builder – Créer des règles CSS SVG en C#

Règles de style SVG en C#

Les documents SVG prennent en charge le style CSS via l’élément <style>, ce qui permet d’appliquer des règles visuelles réutilisables aux graphiques SVG. Avec Aspose.SVG Builder API, vous pouvez configurer les styles SVG par programmation en C# sans écrire manuellement des chaînes CSS.

Cet article explique comment créer des règles de style SVG en C#, appliquer des sélecteurs CSS aux éléments SVG, configurer des polices personnalisées et gérer des styles SVG réutilisables par programmation avec Aspose.SVG for .NET.

Qu’est-ce que RuleBuilder?

RuleBuilder fait partie de l’API Aspose.SVG Builder et sert à configurer par programmation les déclarations CSS des règles de style SVG. Avec SVGStyleElementBuilder, il permet aux développeurs de:

Les règles CSS centralisées simplifient la maintenance SVG et réduisent la duplication du code de style.

Créer des règles de style SVG en C#

Aspose.SVG Builder API propose la classe SVGStyleElementBuilder, un builder d’élément permettant de construire un élément SVG <style>. Cette classe facilite la création et la configuration d’un élément SVG <style> contenant des règles CSS.

Cet exemple montre comment créer un élément SVG <style>, y ajouter une règle CSS @font-face et utiliser la méthode AddRule() pour définir les styles de police des éléments de texte dans un document 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}

Visualisation du fichier font-face.svg

Règle @font-face

La règle CSS @font-face permet de spécifier des polices pour afficher du texte, qui peuvent être téléchargées depuis un serveur distant ou depuis l’ordinateur de l’utilisateur. La règle définit un nom de famille de police personnalisé et indique l’URL source du fichier de police.

Dans l’exemple ci-dessus, la règle @font-face définit une famille de polices personnalisée nommée "VeinlineRegular". Cette règle garantit que la police est chargée et disponible dans le document SVG.

Méthode AddRule()

La méthode AddRule() appartient à SVGStyleElementBuilder et permet de créer des règles CSS dans les documents SVG. Elle prend deux paramètres: le nom du sélecteur CSS et une expression lambda qui définit les propriétés du style avec RuleBuilder.

Dans l’exemple C# ci-dessus, deux règles sont ajoutées:

Builders within Builders

SVG Builder API introduit du sucre syntaxique (syntactic sugar) pour affiner davantage le processus de création et de manipulation de SVG. Cela inclut des builders imbriqués pour divers éléments SVG, offrant un moyen plus intuitif et efficace de définir des structures SVG complexes. Un modèle « builder within a builder » implique l’utilisation de plusieurs classes de builders, où un builder est imbriqué dans un autre pour faciliter la construction d’objets ou de structures complexes.

L’extrait suivant montre comment utiliser RuleBuilder, exemple de builder dans un builder, pour créer et styliser des graphiques SVG par programmation:

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}

Fonctionnement des règles de style

La méthode AddRule() crée des règles CSS réutilisables dans l’élément SVG <style>. Dans cet exemple:

Cette approche sépare la logique de style de la structure SVG et améliore la lisibilité du SVG.

Erreurs courantes et corrections

ProblèmeCause possibleCorrection recommandée
Les styles SVG ne sont pas appliquésSélecteur CSS incorrectVérifier que AddRule() cible le bon élément SVG
La police personnalisée ne s’affiche pasURL de police invalideVérifier le chemin et l’accessibilité du fichier de police
Le rendu du texte varie selon les systèmesLa police requise n’est pas disponibleUtiliser des polices intégrées ou chargées depuis le web
Les éléments SVG ignorent les règles de styleDes attributs inline remplacent le CSSSupprimer les styles inline conflictuels
Les styles de contour ou de remplissage manquentConfiguration incorrecte des propriétésVérifier les règles Fill() et Stroke()

FAQ

1. RuleBuilder est-il préférable au style SVG inline?
Pour les graphiques SVG complexes, les règles CSS réutilisables sont généralement plus faciles à maintenir que des attributs inline répétés. Rule Builder aide à centraliser la logique de style SVG et à réduire le code dupliqué.

2. Puis-je styliser des classes et IDs SVG avec RuleBuilder?
Oui. AddRule() prend en charge les sélecteurs CSS standards, y compris les sélecteurs d’élément, de classe et d’ID.

3. Pourquoi utiliser des règles CSS dans SVG plutôt que des fichiers CSS externes?
Les styles SVG intégrés rendent les graphiques SVG autonomes et plus faciles à réutiliser dans les applications, exports et fichiers SVG indépendants.

4. Puis-je réutiliser le même bloc de style SVG pour plusieurs éléments?
Oui. Un seul bloc SVG <style> peut appliquer des règles réutilisables à plusieurs éléments SVG avec des sélecteurs partagés.

Ressources connexes

Close
Loading

Analyzing your prompt, please hold on...

An error occurred while retrieving the results. Please refresh the page and try again.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.