Accueil

Traduction

Dessiner avec SVG - sommaire

Dessiner avec SVG - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Balises use, defs, use & symbol du langage SVG

Définir un modèle et utiliser ce modèle

Nous devons dessiner 4 carrés identiques : 100 par 100 avec une bordure de 5 bleu marine ; seule la couleur de fond change.

Première solution

Extrait du code (canevas de 400 par 400) :

Le code est très redondant.

Deuxième solution : le clonage

Extrait du code correspondant :

J'ai utilisé la balise defs pour définir une modèle de forme : un carré de 100 par 100 borduré de bleu marine.
Puis j'emploie la balise use pour dessiner à partir de ce modèle (clonage).
Il faut identifier le modèle ; ici #carré.
Ainsi la valeur de l'attribut xlink:href de la balise use devient : "#carre".

Le clonage : une duplication dynamique

Si je redéfinis le modèle idéntifié "carré" dans la définition, les copies sont automatiqument modifiées.

Créer des groupes de formes

On peut créer des modèles composés chacuns de plusieurs formes de base.

Le code correspondant

Définition des modèles

On définit en guise de modèles deux groupes de formes.
Notez l'emploi de l'élément G pour créer des groupes de formes.

Clonage des modèles

La balise use dessine des copies fidèles du modèle. On dit que l'on procéde à un clonage.

La balise symbol

Pour créer un modèle (sans le dessiner) composé d'un groupe de formes basiques on a utilisé la balise G à l'intérieur du conteneur defs mais il y a une autre solution plus simple.
Sachez que la balise symbol remplace avantageusement les deux balises précitées.

Exemple

Ci-dessous une image de 800 par 600 avec un modèle "homme" et un modèle "femme"

Le code SVG correspondant

Définition des modèles

Pour chaque modèle on crée une zone de dessin de 100 par 100 avec l'attribut viewbox.
Les coordonnées des formes constitutives du modèle sont donc désormais indépendantes du canevas SVG mais liées au viewBox associé à la balise symbol.
L'homme et la femme sont identiques sauf que chez la femme l'ellipse (tronc) est remplacée par un polygone (triangle symbolisant une robe).

Clonage des modèles

Si un modèle est défini avec la balise symbol, les attributs width & height sont alors obligatoires au niveau de la balise use.