Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Dans ce chapitre je vais vous montrer comment dessiner des segments et des polygones ouverts ou fermés.
On a dessiné deux croix. La première est verte et chaque ligne a une largeur de 10px. La deuxième est rouge et chaque ligne a une largeur de 16px ; Dans la deuxième croix les extrémités de chaque ligne sont arrondies.
La zone de dessin fait 320 par 200 Le script :
La propriété lineCap permet de définir le style des extrémités de chaque segment.
Attention cette page comprend donc deux éléments "canvas". Il convient donc d'être rigoureux quant aux noms des variables.
Pour chaque canevas : une variable qui référence cette zone de dessin et une variable qui référence son contexte 2D.
Instruction HTML :
Le script :
Le deuxième élément "canvas" n'ayant pas l'attribut ID donc je dois utilisr document.querySelectorAll('canvas')[1] pour le référencer.
On utilise les méthodes moveTo(x,y) et lineTo(x,y) pour dessiner des polygones.
Remarquez que pour dessiner un triangle fermé il n'y a que deux instructions lineTo() et une instruction closePath().
La méthode closePath() ferme le chemin.
La propriété lineJoin permet de définir le style des sommets du polygone.
Vous devez vous dire que c'est beaucoup de code pour dessiner de simples polygones.
La méthode setLineDash() définit le modèle à utiliser pour les pointillés lors du dessin de la ligne, en utilisant un tableau de valeurs
qui spécifie les longueurs des alternances entre pleins et creux.
Ci-dessous dans un Iframe un document HTML contenant un canevas.
Le premier polygone est fermé mais surtout il est borduré de lignes pointillées.
ctx.setLineDash([10,10]) : tirets et espaces ont la même longueur.
Canvas : dessiner des droites et des polygones
Dessiner des segments
Exemple
Le code correspondant
On utilise les méthodes moveTo(x,y) et lineTo(x,y) pour définir une ligne :
Les différentes valeurs de cette propriété :
Canvas : dessiner des polygones
Nous verrons plus tard qu'il y a une solution plus élégante : une fonction spécifique à chaque canevas et donc des variables locales ...
Exemple
Dans le canevas ci-dessus il y a deux polygones:
Le code correspondant
Pour dessiner un quadrilatère fermé il ne faut donc que trois instructions lineTo() et une instruction closePath().
Donc si vous souhaitez une forme ouverte il ne faut surtout pas d'instruction closePath().
Les différentes valeurs de cette propriété :
Il n'y a pas plus simple ???
Rassurez vous. L'API Canvas s'améliore ; il est possible désormais de dessiner une forme complexe en une seule instruction !
Mais je n'en dis pas plus pour l'instant. Dans mon tuto il y a tout un chapitre consacrée au constructeur Path2D().
Lignes pointillées
Le deuxième polygone est ouvert et borduré de lignes continues.
Le script correspondant
ctx.setLineDash([]) : annulation de lignes pointillées ; retour aux lignes continues