Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Graphisme > Divers > Le SVG > Les graphiques vectoriels > Les formes > Lecture du tutoriel

Les formes

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : dark_popol
Note : 19 / 20 (3 votes)
Visualisations : 5 292

Plus d'informations Plus d'informations
Tout document SVG est composé en majorité de formes (rectangles, cercles, etc.). Dans ce chapitre, nous apprendrons ces formes.
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Les rectangles

Un rectangle se définit avec une balise <rect />. Il doit avoir 4 attributs :

Un exemple :

Code : XML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
width="800" height="800" >

<rect x="50" y="200" width="250" height="40" />

</svg>
Logiquement, si height et width sont égales, un carré sera dessiné.
En SVG, toutes les coordonnées sont calculées à partir du coin supérieur gauche du fichier.

Comme vous le voyez, le rectangle est dessiné en noir, car c'est la valeur par défaut. Nous apprendrons à les colorier différemment dans le prochain chapitre, avec du CSS.

On peut aussi rajouter deux attributs, rx et ry, qui sont utilisés pour arrondir les coins du rectangle. Vous pouvez n'en mettre qu'un seul, car l'ordinateur met automatiquement la valeur de celui qui n'est pas défini égale à l'autre :

Code : XML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg xmlns="http://www.w3.org/2000/svg"
width="800" height="800">

<rect x="50" y="200" width="250" height="40" rx="15" />

</svg>

SI vous enregistrez ce code en SVG, et que vous l'ouvrez dans votre navigateur, vous verrez que le rectangle est colorié en noir, car il n'a aucun attribut de style. Nous apprendrons à styliser nos formes dans les prochains chapitres.

Les ellipses

Une ellipse, qui s'inclut avec la balise <ellipse />, doit aussi avoir 4 attributs :
Je suis si gentil que je vous ai fait un beau schéma :
<image>uploads/fr/files/7001_8000/7285.jpg </image>

Si l'on indique le même nombre dans rx et ry , on obtient donc un cercle.
Il existe par contre une balise "raccourcie", <circle />. Elle requiert les mêmes attributs de positionnement que <ellipse /> (c'est-à-dire cx et cy), mais seulement un attribut de rayon, r.

Exemples :

Code : XML
1
2
3
4
5
...
<ellipse cx="125" cy="130" rx="190" ry="45" />

<circle cx="300" cy="350" r="120" />
...

Ici, je ne vous ai pas mis la déclaration XML et le <!DOCTYPE>, je crois que l'on peut s'en passer maintenant.

Les lignes

Une ligne, en SVG, se définit à l'aide de la balise <line />. :lol:
On en indique le début et la fin avec 4 attributs. Petit shéma :
Image utilisateur

Exemple :

Code : XML
1
2
3
...
<line x1="20" y1="80" x2="130" y2="200" />
...

Cette ligne irait du point (20, 80) jusqu'au point (130, 200).
Sous Firefox, cette ligne ne s'afficherait pas, car elle n'a pas de couleur. Nous allons apprendre à en ajouter dans le prochain chapitre. Par contre, IE lui donne le noir comme couleur par défaut, comme pour toutes les autres formes.

Les polygones et les lignes brisées

Les lignes brisées


Une ligne brisée est un ensemble de droites reliées. C'est la balise <polyline /> qui permet de définir une ligne brisée.
Cette fois, un seul attribut est requis : c'est points. Cet attribut indique les coordonnées de chaque point de la ligne brisée, séparées par des virgules et des espaces.

Un exemple :

Code : XML
1
2
3
...
<polyline points="50,50 200,100 20,200 200,40 300,50 400,60" />
...

Ici, la ligne commencera au point (50,50) puis ira au point (200,100), etc., et finira au point (400,60).

Si vous ouvrez ce code dans votre navigateur, vous verrez que la ligne brisée est remplie de noir. C'est une valeur par défaut, que nous corrigerons au prochain chapitre.

Les polygones


Un polygone ressemble beaucoup à une ligne brisée. Comme elle, il n'a besoin que d'un attribut, points, qui indique les points du polygone. La seule différence est que le navigateur trace lui-même une ligne du dernier point vers le premier point, pour fermer le polygone. On le définit avec la balise <polygon />.

Exemple :

Code : XML
1
2
3
...
<polygon points="0,0 40,20 20,20 20,40 30,50 40,60" />
...

Le polygone commencerait au point (0,0), puis irait jusqu'au point (40,20), etc., irait jusqu'à (40,60), puis le navigateur tracera une ligne de (40,60), le dernier point vers (0,0), le premier point du polygone.

Les tracés

Un tracé est encore plus général qu'une ligne brisée. En effet, il permet non seulement de dessiner des droites, mais aussi des courbes. On l'introduit avec la balise <path />.
C'est l'attribut d qui indique les commandes (lignes, courbes, etc.) à effectuer pour dessiner le tracé. Ces commandes sont très variées. Regardons-les en détails...

La commande moveto (M)


La commande moveto (move to, "bouger vers" en anglais) établit un nouveau point courant. (Je vous expliquerai plus tard ce que c'est.)
On note :

Code : XML
1
2
3
...
<path d="M200,300" />
...
Ici, (200,300) sont les coordonnées du nouveau point courant à établir.
Les commandes de tracé peuvent s'écrire avec une lettre majuscule ou minuscule. Si vous utilisez des lettres majuscules, les coordonnées qui suivent seront calculées depuis le coin supérieur gauche du document, comme d'hab'. On appelle ceci des coordonnées absolues. Mais si vous utilisez une lettre minuscule, les coordonnées seront calculées à partir du point courant (patientez, patientez...) dans le tracé. Ce sont alors des coordonnées relatives.
Quel est l'avantage des coordonnées relatives ?

Cela permet de réduire la taille de vos fichiers et à l'ordinateur de faire moins de calculs. Que du bon, quoi ! Je vous encourage donc fortement à utiliser les coordonnées relatives.

Les lignes



La commande lineto (L)


Elle trace une ligne du point courant vers un autre.
Point courant ? o_O Vas-tu enfin nous expliquer ce que c'est ?

C'est simplement la dernière coordonnée indiquée dans l'attribut d. Cela peut être soit un moveto, ou la fin d'une ligne, d'une courbe, etc.

Un exemple :

Code : XML
1
<path d="M100,100 l400,150"/>
Ce code tracera une ligne du point courant (100,100) vers le point (400,150).

Les commandes H et V


Elles sont utilisées pour dessiner des lignes horizontales (H) et verticales (V) seulement. Je vous encourage aussi à les utiliser car elles réduisent la taille de vos fichiers. Leur fonctionnement est similaire à lineto.

Pour fermer vos tracés (Z)


La commande closepath (Z) est un raccourci qui trace une ligne du point courant vers le point spécifié avec la dernière commande moveto. Il n'a besoin d'aucune coordonnée.

Exemple :

Code : XML
1
2
3
...
<path d="M200,200 l10,10 h10,20 v50,20 z"/>
...
Vous remarquerez que j'ai utilisé des lineto horizontaux et verticaux, et que j'ai utilisé des coordonnées relatives, sauf pour le premier moveto bien entendu.

Les courbes


Les courbes sont un peu plus difficiles à comprendre. En effet, vous devez savoir quel type de courbe vous voulez dessiner. Et il en existe trois.

Les courbes quadratiques de Bézier (Q et T)


Une courbe quadratique de Bézier, ça ressemble à ça :

Image utilisateur

On introduit ce type de courbe avec la commande Q, qui trace une courbe à partir du point courant. Vous devez indiquer deux coordonnées :
Je vois déjà vos yeux s'écarquiller de terreur...
Point de contrôle ? !? o_O :o

Pas de panique, amis Zéros :) ! Je vais tout vous expliquer. Pour vraiment illustrer mes propos, je dirais qu'un point de contrôle est un point qui "tire" sur la courbe. Essayez le code suivant :

Code : XML
1
<path d="M200,200 q0,100 0,200"/>


Citation : Vous
"Oh l'horreur ! J'ai écrit q et ça me dessine une ligne !"

C'est tout à fait normal. En effet, le point de contrôle est situé sur la ligne imaginaire qui va du point courant vers le point de fin de courbe. Si vous changez les coordonnées du point de contrôle, celui-ci semble tirer la courbe vers lui.

Il existe une autre commande pour dessiner des courbes quadratiques : T. C'est une sorte de raccourci. En effet, vous devez seulement indiquer une coordonnée : le point de fin de la courbe. Le point de contrôle est calculé comme étant le point image selon une symétrie centrale du point de contrôle de la courbe q précédente.

Une symétrie centrale est une symétrie effectée à partir d'un point, et non d'un axe.

Petit schéma pour les visuels :

Image utilisateur


Et un exemple :

Code : XML
1
<path d="M200,200 q200,100 0,200 t200,100" />

Les courbes cubiques de Bézier (C et S)


Là, c'est (un peu) plus compliqué ! :( Une courbe de Bézier cubique, comme ça :

<image>uploads/fr/files/7001_8000/7354.jpg </image>

est introduite avec une commande C, et a besoin de trois coordonnées :Chaque point de contrôle tire sa moitié de la courbe vers lui.

Exemple :

Code : XML
1
<path d="M200,200 c200,100 -200,300 200,300" />


Il existe aussi une commande raccourcie, (qui se comporte comme T), mais pour les courbes cubiques ; c'est S. Vous devez indiquer seulement le deuxième point de contrôle et le point de fin de courbe, le premier point de contrôle étant l'image par symétrie centrale du deuxième point de contrôle de la courbe précédente.

Encore un beau schéma :

<image>uploads/fr/files/7001_8000/7355.jpg </image>


Et l'exemple qui va avec :

Code : XML
1
<path d="M100,100 c150,-50 100,200 200,200 s0,-100 100,-200" />


Les arcs elliptiques (A)


Un arc elliptique, c'es une partie d'ellipse, comme ceci :
<image>uploads/fr/files/7001_8000/7356.jpg </image>

C'est la dernière commande que nous apprendrons, et probablement la plus compliquée, car elle nécessite six paramètres (je dis paramètres, car cette fois ce n'est pas seulement des coordonnées comme les autres commandes.)
Les voici :


En code, ça fait comme ceci :

Code : XML
1
<path d="M200,450 a25,100 -30 0,1 50,-25 " />

<image>uploads/fr/files/7001_8000/7357.jpg </image>


Voici ce que le navigateur prend en compte pour dessiner un arc elliptique :

Souvent, il advient que 4 arcs soient possibles, sur 2 ellipses différentes, avec ces indications seulement. C'est ici qu'interviennent les valeurs de drapeau-large et de drapeau balayage.
Voilà un petit schéma que j'ai traduit (du W3C) :

<image>uploads/fr/files/7001_8000/7358.jpg </image>

Q.C.M.

Quelle est la différence entre un polygone et une ligne brisée ?
Qu'est-ce que le point courant dans un tracé ?
Quelle est la différence entre une courbe cubique et une courbe quadratique ?

Statistiques de réponses au QCM


Bon, je sais que ce chapitre était un peu moche, et décoloré, mais patience...
le plus intéressant reste à venir ! :D
Dans le prochain chapitre, vous apprendrez à ajouter de la couleur, pour égayer un peu vos formes.
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 06/12/2005 à 22:39:11
Modifié : le 22/08/2008 à 15:56:33
Avancement : 100%
Licence : Copie non autorisée

6 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 174 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0213s (0.01s)