Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
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.
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:
<style>;Les règles CSS centralisées simplifient la maintenance SVG et réduisent la duplication du code de style.
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}
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.
font-family dans la règle de style générée. Elle indique le nom de police utilisé pour les éléments de texte correspondants.RuleBuilder définit le descripteur CSS src dans la règle @font-face avec 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.
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:
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:
SVGStyleElementBuilder définit des règles CSS par sélecteur, par exemple “circle” ou “text”. Dans chaque expression lambda,
RuleBuilder configure les déclarations telles que la couleur de remplissage, la couleur de contour et la famille de polices pour les éléments SVG correspondants.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}La méthode AddRule() crée des règles CSS réutilisables dans l’élément SVG <style>. Dans cet exemple:
"circle" stylise tous les éléments cercle SVG;"text" configure la typographie du texte SVG;Cette approche sépare la logique de style de la structure SVG et améliore la lisibilité du SVG.
| Problème | Cause possible | Correction recommandée |
|---|---|---|
| Les styles SVG ne sont pas appliqués | Sélecteur CSS incorrect | Vérifier que AddRule() cible le bon élément SVG |
| La police personnalisée ne s’affiche pas | URL de police invalide | Vérifier le chemin et l’accessibilité du fichier de police |
| Le rendu du texte varie selon les systèmes | La police requise n’est pas disponible | Utiliser des polices intégrées ou chargées depuis le web |
| Les éléments SVG ignorent les règles de style | Des attributs inline remplacent le CSS | Supprimer les styles inline conflictuels |
| Les styles de contour ou de remplissage manquent | Configuration incorrecte des propriétés | Vérifier les règles Fill() et Stroke() |
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.
stroke ou fill pour diverses formes et éléments SVG lors de leur remplissage avec de la peinture, des motifs ou des dégradés.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.