SVG XML:Éléments graphiques de base

Un article de WikiTuto.

Jump to: navigation, search
  • XML Concepts de base
  1. Historique : de SGML à XML
  2. XML:Mise en oeuvre
  3. Structure d'un document XML
  4. Support par les navigateurs
  • Prise en main d'XML CookTop
  1. XML CookTop généralités
  2. Interface
  3. Exercices
  • Prise en main d'oXygen XML Editor
  1. Généralités
  2. Interface
  3. Fonctionnalités
  4. Exercices
  • Déclarations de Type de Document
  1. Introduction
  2. Types de DTD
  3. Déclarations d'éléments
  4. Déclarations d'attributs
  5. Déclarations d'entités
  • Initiation aux Schéma XML
  1. Introduction
  2. Les premiers pas
  3. Déclarations d'éléments et d'attributs
  4. Les types de données
  5. Espaces de nom
  6. Les dérivations
  7. Diverses autres fonctionnalités
  • Mise en forme à l'aide de feuilles de style XSL
  1. Présentation
  2. Exemples de mises en forme
  • Mise en forme à l'aide de feuilles de style XSL (XSLT)
  1. Les expressions de sélection
  2. XPath
  3. Éléments XSLT
  • Fonctions XPath
  1. Fonctions XPath applicables aux nœuds
  2. Fonctions XPath applicables aux chaînes de caractèress
  3. Fonctions XPath applicables aux nombres
  4. Fonctions booléennes
  5. Autres fonctions
  • Utilisation du DOM et XSLT dynamique
  1. Insertion de code JavaScript dans une page
  2. Utilisation du DOM
  • Synchroniser des contenus multimédia avec SMIL
  1. Généralités
  2. Construction progressive d'un fichier SMIL
  3. Conclusion
  • Un format de dessin vectoriel en XML: SVG
  1. Introduction
  2. SVG de base
  3. Éléments graphiques de base
  4. Structuration: éléments de groupage et références
  5. Transformations
  6. Autres fonctionnalités
  • L'animation dans le SVG
  1. Introduction
  2. Animation de base: l'élément animate
  3. Des animations plus complexes
  • Plus loin que les formulaires HTML: XForms
  1. Généralités
  2. Fonctionnalités des formulaires XForms
  3. Dans la pratique
  4. Pour aller plus loin...
  • Quelques mots sur les Services Web
  1. Généralités
  2. Trouver un service Web
  3. Accéder à un service Web
  4. Récapitulation et inconvénients
Source : Gilles Chagnon

Sommaire

Introduction

SVG définit un certain nombre d'éléments graphiques de base. Voici la liste des éléments les plus importants :

1.Texte avec <text> ; 2. Rectangles <rect> ; 3.Le cercle <circle> et l'ellipse <ellipse> ; 4.Lignes <line> et poli-lignes <polyline> ; 5.Polygones ; 6.Formes arbitraires avec <path>.

Chaque élément graphique est représenté par un élément XML qui est paramétrable avec des attributs XML et hérite d'attributs de ses parents.

Comme dans d'autres langages vectoriels (par ex. VRML), il existe des formes géométriques de base (rectangle, ellipse, cercle, lignes, poly-lignes et polygone). Il existe également une méthode permettant de produire des formes complexes.

Mécanismes principaux

Attributs

Il faut se référer à la spécification pour connaître tous les détails. Ici, nous ne montrons en règle générale qu'un petit extrait, car leur nombre est énorme !

La plupart des éléments se partagent un nombre commun d'attributs comme par exemple l'attribut id (identificateur) ou encore style (les propriétés de style suivent les règles du CSS2).

La plupart des valeurs d'attributs sont assez intuitives (pour ceux qui connaissent un peu CSS). Par contre pour certains il existe de véritables sous-grammaires (voir Formes arbitraires avec <path> par exemple)

Positionnement et unités

Les objets SVG se positionnent dans un système de coordonnées qui commence en haut et à gauche (pratique standard en graphisme informatique). Il est possible de travailler avec des coordonnées locales.

Les unités à utiliser sont les mêmes qu'en CSS2.

Transformations

Chaque objet peut être translaté, orienté et changé de taille. Il hérite des transformations de l'objet parent.

Le rendu

Introduction

SVG définit quelques dizaines d'attributs-propriétés applicables à certains éléments. En ce qui concerne les éléments graphiques, voici les deux plus importants :

  • stroke définit la forme du bord d'un objet ;
  • fill définit comment le contenu d'un objet est rempli.


SVG possède deux syntaxes différentes pour définir la mise en forme d'un élément :


  • L'attribut style reprend la syntaxe et les styles de CSS2 ;
  • Pour chaque style, il existe aussi un attribut de présentation SVG. Cela simplifie la génération de contenus SVG avec XSLT.

Exemple :

<rect x="200" y="100" width="60" height="30" fill="red" stroke="blue" stroke-width="3" />

Le code précédent a le même effet que :

<rect x="200" y="100" width="60" height="30" style="fill:red;stroke:blue;stroke-width:3" />

Propriétés fill

fill permet de gérer le remplissage de l'élément. Ses propriétés sont :


  • la couleur, avec les mêmes conventions de représentation qu'en CSS (exemple précédent : fill="red").
  • l'URI d'une couleur, d'un gradient de couleur (pour obtenir un effet de dégradé) ou d'un motif de remplissage.
  • une valeur d'opacité (opacity), comprise entre 0 et 1. Voir l'exemple opacite.svg.

Propriétés de stroke

stroke permet de gérer l'entourage d'un élément de dessin. Ses propriétés sont :


  • la couleur, avec les mêmes conventions de représentation qu'en CSS (exemple précédent : fill="red").
  • l'uri d'une couleur, d'un gradient de couleur (pour obtenir un effet de dégradé) ou d'un motif de remplissage.
  • une valeur d'opacité (opacity), comprise entre 0 et 1.
  • l'épaisseur (width) du trait ;
  • la jonction de ligne (linejoin), qui peut prendre les valeurs miter, round ou bevel. Voir l'exemple strokejoin.svg
  • la forme des angles (linecap) qui peut être butt( les lignes s'arrêtent brutalement à leur fin), round ou square (des carrés sont tracés en bout de chaque ligne). Voir l'exemple svgstrokecap.svg.
  • des pointillés éventuels avec la propriété dasharray, qui doit prendre comme valeur, si spécifiée, une chaîne de valeurs numériques séparées par des espaces. Voir par exemple strokedash.svg. On peut spécifier un offset de démarrage des pointillés avec la propriété dashoffset.

Figures géométriques

Rectangles

L'élément <rect> permet de définir des rectangles, y compris avec des coins arrondis sans passer par une modification de l'attribut stroke-linejoin. Les attributs de base sont :

  • x et y, qui donnent la position du coin supérieur gauche.
  • width et height, qui permettent de définir respectivement largeur et hauteur du rectangle.
  • rx et ry, qui sont les axes x et y de l'ellipse utilisée pour arrondir ; les nombres négatifs sont interdits, et on ne peut dépasser la moitié de la largeur (longueur) du rectangle.

Voir l'exemple rectangle.svg

Cercles et ellipses

Un cercle est créé par l'élément <circle> et une ellipse par l'élément... <ellipse>. Leurs attributs sont :


  • cx et cy qui définissent les coordonnées du centre.
  • r qui définit le rayon du cercle.
  • rx et ry qui définissent les demi-axes x et y de l'ellipse.

Voir l'exemple cercleellipse.svg.

Lignes et polylignes

Une ligne est définie avec l'élément <line>, une poly-ligne par l'élément... <polyline>.

Les attributs de <line> sont :


  • x1 et y1, qui définissent les coordonnées du point de départ.
  • x2 et y2, qui définissent les coordonnées du point d'arrivée.

L'attribut de base de <polyline> est points, qui prend comme valeur une suite de coordonnées. Voir l'exemple lignes.svg pour plus de détails.

Polygones

Un polygone est une courbe fermée, une poly-ligne une courbe ouverte. L'élément permettant de définir un polygone est <polygon>. L'attribut de base de cet élément est points, qui s'utilise de la même manière qu'avec une polyligne. Voir des exemples dans le fichierpolygones.svg.

Exercice 1. Éléments géométriques de base

Exercice 2. Rendu visuel

Formes arbitraires avec path

Introduction

L'élément <path> permet de définir des formes arbitraires. Ces formes peuvent avoir un contour et servir de support pour d'autres éléments (voir plus loin un exemple avec du texte).

Attributs de base

Ces attributs sont au nombre de 2 :

  • d, au nom peu explicite, sert à définir les path data, autrement dit la liste de commande permettant de tracer le chemin.
  • nominalLength, facultatif, permet de définir éventuellement la longueur totale du chemin.

Path data

Les path data suivent les règles suivantes :


  • Toutes les instructions peuvent être abrégées en un seul caractère
  • Les espaces peuvent être éliminés
  • On peut omettre de répéter une commande
  • Il existe toujours deux versions des commandes :
    • en majuscules : coordonnées absolues
    • en minuscules : coordonnées relatives

Ces règles visent à diminuer au maximum la taille requise par la description des chemins. Les commandes sont :

  • M ou m : (moveto) : x,y démarre un nouveau sous-chemin
  • Z ou z : (closepath) ferme un sous-chemin en traçant une ligne droite entre le point courant et le dernier moveto
  • lineto
    • L ou l : (lineto) : x , y trace une ligne droite entre le point courant et le point ( x,y ).
    • H ou h : (horizontal lineto) : x trace une ligne horizontale entre le point courant et le point ( x,y0 ).
    • V ou v : (vertical lineto) : y trace une ligne verticale entre le point courant et le point ( x0,y ).

Il existe également des commandes permettant de tracer des courbes (courbes de Bézier, arcs...).

Un exemple de tracé simple et un autre de tracé de courbes sont visibles dans le fichier path.svg.

Texte

La balise text

La balise <text> est considérée comme un objet graphique, et est donc gérée comme telle. Elle possède deux attributs : x et y, qui donnent les coordonnées du point de départ du texte. La mise en forme est réalisée par des propriétés de style CSS.

Éléments d'ajustement

A l'intérieur d'un élément <text>, on peut ajuster la position du texte, sa valeur ou la police grâce à l'élément <tspan>. Cet élément possède, outre les attributs x et y, des attributs dx et dy permettant de spécifier les décalages à apporter dans l'écriture du texte par rapport à la position par défaut. Voir par exemple le fichier texte.svg.

Lien avec les chemins

Il est possible d'écrire un texte le long d'un chemin (path) défini par ailleurs, par un élément <path> en appelant un élément <textPath>. Voir l'exemple textpath.svg.

Exercice 1. Écriture de texte le long d'un chemin


Sources

Gilles Chagnon

Voir aussi

Boîte à outils
Annuaire gratuitCe site est listé dans la catégorie Informatique : Aide et astuces en informatique Annuaire