Les canvas sont apparus avec HTML5. Ils permettent de générer des graphiques sur une page web. En fait, un canvas est un espace de pixels réservé. Des primitives JavaScript basiques permettent d’y tracer des formes géométriques simples.
A la fin de ce chapitre, vous saurez :
Pour générer un canvas, on utilise la balise <canvas/> éventuellement complétée d’attributs de dimension, contour, etc.
Une page très simple pour générer un canvas peut donc être :
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<canvas id="canvas"/>
<script type='text/javascript' src='canvas.js'></script>
</body>
</html>
<canvas>
car il nous sera utile par la suite.canvas.js
le code JavaScript suivant qui nous permettra de réaliser nos graphiques.const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
Par défaut, les dimensions d’un canvas sont de 300px × 150px. Vous pouvez préciser vous-même ces dimensions:
<canvas id="canvas" width="300" height="500"/>
Pour générer des figures dans votre canvas, vous devez utiliser un système de coordonnées cartésiennes dont l’origine est le point en haut et à gauche de votre canvas. L’illustration ci-dessous vous présente un rectangle dont le coin supérieur gauche se situe aux coordonnées (50,60) de la page :
En suivant les indications que l’on peut par exemple trouver ici, ajoutez la ligne qui suit à votre fichier canvas.js afin de tracer un rectangle :
ctx.strokeRect(10,10,100,100);
Il existe 3 primitives pour créer des rectangles :
Les propriétés fillStyle et strokeStyle de l’objet ctx
permettent de définir la couleur des éléments tracés respectivement avec fillRect
et strokeRect
.
L’exemple suivant :
ctx.fillStyle = 'blue';
ctx.strokeStyle = 'yellow';
ctx.strokeRect(10,10,100,100);
ctx.fillRect(200,200,50,60);
Permet de tracer deux rectangles, le premier est vide avec un contour jaune et le deuxième est plein et de couleur bleue.
La syntaxe utilisée pour définir les couleurs est identique à celle utilisée en CSS :
#
,rgb()
qui prend 3 arguments numériques compris entre 0 et 255,rgba()
qui prend un 4ème argument compris entre 0 et 1 et qui correspond au degré d’opacité de l’objet : 0.0 = transparent, 1.0 = opaque.const squares=["yellow","red","green",'blue','yellow'];
rgba()
qui permet de donner une certaine transparence à vos figures.