Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
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 line, polygon, polyline
Hormis la balise SVG le code est le suivant :
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; }
Commençons par un exemple simple pour présenter cette balise.
Dessinons des segments et des triangles avec cette balise
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.
Vous pouvez notez que l'attribut stroke-linecap peut être utilisé avec la balise path pour dessiner un segment unique.
L'attribut stroke-linejoin peut être utilisé avec un chemin dessinant des angles (au moins deux segments).
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"
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.
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.
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 ... "
Comme vous savez il existe deux types de courbes de Bézier : les courbes quadratiques et les courbes cubiques.
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.
Notez que le fichier SVG contient une feuille de style.
Dans un fichier SVG la feuille de style CSS doit être l'intérieur du conteneur STYLE (comme dans un fichier HTM !).
Une règle de style en ligne (attribut style) est aussi possible (comme dans un fichier HTM !).
Vous pouvez aussi mettre en forme un objet SVG via une classe.
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.
Pour dessiner des arcs, il y a deux solutions : une très compliquée et une très simple.
Lisez quand même ce paragraphe.
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.
Il s'agit en fait d'une astuce.
Deux canevas SVG de front. L'un présente un arc de cercle (clair de lune) et l'autre un arc d'ellipse.
Une classe CSS : svg.front {display : inline-block ; margin-right : 10px ; }
Le code HTML & SVG :
Comme le premier canevas a comme couleur de fond "navy" le rectangle 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 ...