Accueil

Traduction

Dessiner avec SVG - sommaire

Sommaire partiellement masqué - faites défiler !

Dessiner avec SVG - recherche

L'auteur : Patrick Darcheville

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

SVG : la balise path

Nous allons maintenant introduire la balise path (chemin).

Grâce à cette balise on peut réaliser des formes complexes : courbes de Bézier, arcs elliptiques,etc.

Mais la balise path peut aussi remplacer avantageusement les balises polygon, polyline pour dessiner des lignes brisées et des polygones.

Exemple de forme complexe produite par la balise path

L'instruction path est la suivante :

Une seule instruction pour dessiner une forme complexe !

style1 est une classe définie dans la feuille de style interne de la page.
Définition de cette classe : .style1 {stroke : olive ; stroke-width:4px; fill:none; }

La notation en absolu du chemin

Exemple de notation en absolu de chemins

La balise path path non fermé : pas de commande Z path fermé : commande Z à la fin Ligne produite avec la balise path

Le code correspondant

Nous avons trois formes : deux triangles et une ligne
Le premier triangle est ouvert (manque un segment) et le deuxième est fermé;

Un chemin peut comprendre plusieurs commandes L mais toujours une seule commande M.
La virgule séparant l'abscisse de l'ordonnée est facultative. Donc vous pouvez parfaitement écrire les chemins de la façon suivante , par exemple : "M 240 40 L 350 100 L 300 280 Z"

Chemin avec des verticales et horizontales

SVG - balise path - Tracer des lignes horizontales et verticales avec les commandes H et V path fermé composé de droites horizontales et verticales path ouvert composé de droites horizontales et verticales

Le code SVG correspondant

Lorsque un chemin consiste en une succession de segments horizontaux ou verticaux utilisez les commandes H et V à la place de L.
Il y a en effet la commande H (comme Horizontal) et la commande V (comme Vertical) qui remplacent avantageusement la commande L (comme Lineto).
Les commandes H et V doivent être suivies d’un seul nombre : l'abscisse (pour la commande H) ou l'ordonnée (pour la commande V) du point d’arrivée du segment.

Les commentaires dans le code SVG

Observez attentivement le code SVG ci-dessous !
J'ai utilisé la balise double title pour un commentaire général de l'image vectorielle, son titre.
J'ai utilisé la balise double desc pour commenter chaque instruction basée sur la balie path, sa description.
Ces deux balises ne peuvent contenir que du texte. Elles n'ont aucune incidence sur le dessin vectoriel.

Notation en relatif de chemins

Définir dans un path les coordonnées x et y en absolu de chaque point (c'est à dire par rapport à l'arête supérieure gauche de la zone de dessin) est une opération délicate et qui exige de réaliser au préalable un croquis sur papier à petits carreaux.
Mais, bonne nouvelle, il est possible d'exprimer les coordonnées d'un point de façon relative c'est à dire d'exprimer ses coordonnées par rapport au précédent point. Ce qui, vous en conviendrez, beaucoup plus simple pour l'esprit humain.
Il est aussi possible de mélanger dans un path les coordonnées relatives et absolues mais je vous le déconseille.
Pour préciser que les coordonnées d'un point sont exprimées en relatif il faut écrire les commandes en minuscule (l,h,v).

Attention les coordonnées x et y du point de départ du chemin c'est à dire les coordonnées qui suivent la commande M doivent toujours être exprimées en absolu !

Exemple de notation en relatif du chemin

SVG - balise path - notation en relatif des coordonnées du chemin dessiner un escalier : notation en relatif dessiner un zigzag : notation en relatif

Le code SVG correspondant

Chaque balise path a deux attributs : d et class !
Dans l'attribut d les commandes h,v, l sont écrites en minuscules !

Dans le premier path on une alternance : h 20 v 20
Dans le deuxième path on a une alternance : l 20, -20 l 20,20
Le premier chemin est fermé (commande z) ; ce qui n'est pas le cas du deuxième chemin (absence de commande z).

La virgule séparant l'abscisse de l'ordonnée est facultative. Donc vous pouvez parfaitement écrire les chemins de la façon suivante, par exemple : "M 10 280 l 20 -20 l 20 20 l 20 -20 ... "

Dessiner des courbes de Bézier (quadratique et cubique)

Comme vous savez il existe deux types de courbes de Bézier : les courbes quadratiques et les courbes cubiques.

Courbes quadratiques

Exemple

image SVG

Le code du fichier SVG inséré dans la page

En effet j'insère ici via la balise IMG, un fichier d'extension .svg

Ne vous prenez pas la tête avec cette syntaxe compliquée.
Le code initial d'un fichier SVG n'est pas encodé manuellement mais généré par un logiciel tel Inkscape ... Les "namespace" sont mentionné dans le document Inkscape.

Notez qu'un fichier SVG peut comporter une feuille de style.
Il faut bien sûr utiliser les propriétés CSS de mise en forme qui sont spécifiques aux éléments SVG : fill, stroke, etc.
Pour le reste il n'y a aucune différence entre du code SVG interne ou externe.

Comme dans tout path la commande Q est précédée de la commande M avec les coordonnées du point de départ.

Pour comprendre le fonctionnement d’une courbe quadratiques il faut imaginer un segment de métal qui, attiré par un aimant (le point d'inflexion), se courbe vers ce point aimant (sans jamais le toucher).
Dans l'exemple Les deux points d'inflexion ont la même abcsisse (200) mais des ordonnées opposées : 5 et 195.
Donc la première ligne se courbe vers le haut et la deuxième se courbe vers le bas.

Courbes cubiques avec SVG

Exemple

image SVG

Le code du fichier SVG (extraits) inséré dans cette page

Les courbes de Bézier cubiques (ou tout simplement "courbes cubiques") sont semblables aux courbes de Bézier quadratiques à la différence qu’il y a deux points aimants.

Comme dans tout chemin la commande C est précédée de la commande M avec les coordonnées du point de départ.

Dans l'exemple les trois courbes cubiques ont le même point de départ et le même point d'arrivé mais la courbe de couleur bleue est plus creusée que la rouge car les ordonnées de ses deux points d'inflexion sont respectivement 0 et 200 alors que ces mêmes ordonnées sont seulement 50 et 150 pour la courbe rouge.

Faut-il rappeler que la commande c peut être écrite en minuscules suivie des coordonnées en relatif des points d'inflexion et du point d'arrivée c'est à dire par rapport au point de départ.
C'est la technique que j'ai réalisé pour la courbe verte.

Pour cette courbe verte les ordonnées des points d'inflexion sont respectivement -150 et 150 par rapport à l'ordonnée du point d'origine alors qu'elles sont -50 et 50 pour la courbe rouge et -100 et 100 pour la courbe bleue.
C'est pour cette raison que c'est la courbe verte la plus creusée.

Arcs de cercle et arcs d'ellipse

Pour dessiner des arcs, il y a deux solutions : une très compliquée et une très simple.

Solution très compliquée

Lisez quand même ce paragraphe mais ne vous prenez pas la tête car il faut admettre que le code SVG devient assez compliqué.

Exemple

Le code SVG correspondant (écrit directement dans la page)

Commentaire

Pour dessiner des arcs d'ellipse (de cercle) il faut employer la balise path avec la commande A (A comme arc).
La lettre A est précédée des coordonnées X,Y du point de départ de l'arc.

Solution très simple

Il s'agit en fait d'une astuce.

Exemples

Deux canevas SVG de front. L'un présente un arc de cercle (clair de lune) et l'autre un arc d'ellipse.

Le code correspondant

Une classe CSS définie dans la feuille de style de la page : svg.front {display : inline-block ; margin-right : 10px ; }

Le code SVG interne :

Comme le premier canevas a comme couleur de fond "navy" donc le cercle (qui masque partiellement le rond jaune) doit être rempli de cette même couleur.
Le deuxième canevas n'a pas de couleur de fond défini donc par défaut c'est "white".
Admettez que c'est beaucoup plus simple que de créer un chemin avec 7 paramètres ...