Dessiner des rectangles dans un élément HTML canvas en Javascript

L’élément canvas ne supporte qu’un type de figure géométrique : le rectangle. Les autres types de figures vont êtes construites en traçant des lignes à partir de coordonnées de points qu’on va donner.

On va pouvoir dessiner deux types de rectangles au sein de notre canevas : des rectangles vides et des rectangles pleins.

 

Dessiner un rectangle vide

Pour dessiner un rectangle vide, nous allons utiliser la méthode strokeRect() avec notre objet CanvasRenderingContext2D.

On va passer quatre arguments à cette méthode : les deux premiers correspondent respectivement au retrait de notre rectangle par rapport aux bords gauche et supérieur de notre canevas tandis que les deux autres servent à indiquer la largeur et la hauteur de notre rectangle.

Attention à ne pas préciser d’unités avec les arguments de strokeRect() : en effet, la plupart des longueurs sont automatiquement converties en équivalent pixel par le canevas lui-même et on ne précisera donc jamais d’unité pour éviter de dessiner des figures qui vont être déformées.

En utilisant strokeRect(), seul le contour du rectangle sera dessiné. Ce contour sera dessiné en utilisant la valeur de la propriété strokeStyle qui appartient également à CanvasRenderingContext2D.

La propriété strokeStyle peut prendre une couleur, un dégradé ou un motif.

Pour dessiner un rectangle vide dans notre canevas, on va donc déjà commencer par fournir une valeur à la propriété strokeStyle puis on utilisera la méthode strokeRect() pour définir l’emplacement et la taille de notre rectangle vide comme ceci.

Attention ici : si on exécute la méthode strokeRect() avant d’avoir passé une valeur à strokeStyle, cette valeur ne pourra pas être utilisée pour dessiner les contours de notre rectangle vide.

See the Pen
Cours JavaScript 15.2.1
by Pierre (@pierregiraud)
on CodePen.

 

Dessiner un rectangle plein

Pour dessiner un rectangle plein dans notre canevas, on va plutôt utiliser la méthode fillRect() de l’interface CanvasRenderingContext2D.

Cette méthode s’utilise exactement de la même façon que strokeRect() et prend donc également 4 arguments correspondent au retrait de notre rectangle par rapport aux bords gauche et supérieur de notre canevas et servent à indiquer la largeur et la hauteur de notre rectangle.

Une nouvelle fois, on ne précisera pas d’unités lorsqu’on passe des arguments à fillRect().

La méthode fillRect() va nous permettre de dessiner un rectangle plein. Le remplissage du rectangle va se faire à partir de la valeur de la propriété fillStyle cette fois-ci.

La propriété fillStyle, tout comme strokeStyle, peut prendre une couleur, un dégradé ou un motif qui va ensuite être utilisé pour remplir les figures du canevas.

On va donc à nouveau devoir commencer par fournir une valeur à fillStyle puis utiliser ensuite fillRect()pour dessiner un rectangle plein dans le canevas.

See the Pen
Cours JavaScript 15.2.2
by Pierre (@pierregiraud)
on CodePen.

 

Dessiner plusieurs rectangles dans le canevas

On va tout à fait pouvoir dessiner plusieurs figures à la suite dans un canevas et notamment dessiner plusieurs rectangles. La dernière figure créée sera au-dessus (visuellement) de la précédente et etc.

Si on souhaite dessiner plusieurs figures pleines ou plusieurs figures vides avec des styles différents, il faudra bien penser à modifier la valeur des propriétés strokeStyle et fillStyle afin d’obtenir les styles souhaités.

See the Pen
Cours JavaScript 15.2.3
by Pierre (@pierregiraud)
on CodePen.

 

Effacer une zone rectangulaire dans le canevas

On va également pouvoir effacer une zone rectangulaire dans notre élément canvas en utilisant cette fois-ci la méthode clearRect().

Cette méthode va prendre 4 arguments qui vont correspondre aux mêmes données que les méthodes précédentes et va tout simplement effacer les dessins dans la zone précisée.

See the Pen
Cours JavaScript 15.2.4
by Pierre (@pierregiraud)
on CodePen.

Laisser un commentaire

Logo Pierre Giraud Connexion Confidentialité CGV Sitemap Facebook Pierre Giraud Twitter Pierre Giraud Youtube Pierre Giraud Linkedin Pierre Giraud

© Pierre Giraud - Toute reproduction interdite - Mentions légales