Aller au contenu

Introduction au Canvas

L'élément HTML <canvas> est utilisé pour dessiner des graphiques via un script. Il ne s'agit que d'un conteneur pour les graphiques. Vous avez besoin de JavaScript pour dessiner les graphiques.

Canvas dispose de plusieurs méthodes pour dessiner des chemins, des cercles, des rectangles, du texte, ainsi que pour ajouter des images.

Canvas peut être utilisé pour dessiner du texte coloré, avec ou sans animation. Les objets Canvas peuvent également être animés, ce qui signifie qu'ils peuvent se déplacer.

TIP

Plusieurs éléments <canvas> peuvent être présents sur une seule page HTML.

Le Canvas est une zone rectangulaire et, par défaut, il ne possède ni bordure ni contenu.

Introduction au Canvas

html
<canvas id="canvas" width="250" height="150"></canvas>

DANGER

Utilisez toujours un attribut id, ainsi que des attributs width et height pour définir la taille du canvas. Utilisez l'attribut style pour ajouter une bordure.

Pour dessiner sur le canvas, vous devez d'abord obtenir un contexte de dessin 2D en utilisant canvas.getContext('2d').

Exemple de la balise HTML <canvas> :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <canvas id="canvas" width="250" height="150" style="border:1px solid #1c87c9;">
      The HTML5 canvas tag is not supported by your browser.
    </canvas>
  </body>
</html>

Exemple de la balise HTML <canvas> pour dessiner un cercle :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <canvas id="exampleCanvas" width="200" height="200" style="border:1px solid #dddddd;">
      HTML5 canvas tag is not supported by your browser.
    </canvas>
    <script>
      var c = document.getElementById("exampleCanvas");
      var ctx = c.getContext("2d");
      ctx.beginPath();
      ctx.arc(100, 100, 60, 0, 2 * Math.PI);
      ctx.strokeStyle = '#009299';
      ctx.stroke();
    </script>
  </body>
</html>

Exemple de la balise HTML <canvas> pour dessiner du texte :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <canvas id="exampleCanvas" width="350" height="110" style="border:1px solid #dddddd;">
      HTML5 canvas tag is not supported by your browser.
    </canvas>
    <script>
      var c = document.getElementById("exampleCanvas");
      var ctx = c.getContext("2d");
      ctx.font = "40px Arial";
      ctx.fillStyle = '#262ac7';
      ctx.fillText("Canvas Text", 55, 65);
    </script>
  </body>
</html>

Exemple de la balise HTML <canvas> pour dessiner un dégradé linéaire :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <canvas id="exampleCanvas" width="300" height="140" style="border:1px solid #dddddd;">
      The HTML5 canvas tag is not supported by your browser.
    </canvas>
    <script>
      var c = document.getElementById("exampleCanvas");
      var ctx = c.getContext("2d");
      var grd = ctx.createLinearGradient(0, 0, 300, 0);
      grd.addColorStop(0, "#359900");
      grd.addColorStop(1, "#ffffff");
      ctx.fillStyle = grd;
      ctx.fillRect(20, 20, 250, 100);
    </script>
  </body>
</html>

Exemple de la balise HTML <canvas> pour dessiner une ligne :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <canvas id="exampleCanvas" width="150" height="150" style="border:1px solid #cccccc;">
      The HTML5 canvas tag is not supported by your browser.
    </canvas>
    <script>
      var c = document.getElementById("exampleCanvas");
      var ctx = c.getContext("2d");
      ctx.moveTo(0, 0);
      ctx.lineTo(150, 150);
      ctx.strokeStyle = '#86417d';
      ctx.stroke();
    </script>
  </body>
</html>

Exemple de la balise HTML <canvas> pour dessiner une image :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <div>
      <h2>Original image</h2>
      <img id="flower" src="https://images.unsplash.com/photo-1485431142439-206ba3a9383e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=500&q=60" width="500" height="379" />
    </div>
    <h2>Draw an image with canvas</h2>
    <canvas id="exampleCanvas"></canvas>
    <script>
      const canvas = document.getElementById('exampleCanvas');
      const ctx = canvas.getContext('2d');
      const image = document.getElementById('flower');
      image.addEventListener('load', e => {
        ctx.drawImage(image, 80, 80, 350, 200, 10, 10, 150, 100);
      });
    </script>
  </body>
</html>

Exemple de la balise HTML <canvas> pour dessiner un dégradé circulaire :

html
<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <canvas id="exampleCanvas" width="260" height="160" style="border:1px solid #cdcdcd;">
      The HTML5 canvas tag is not supported by your browser.
    </canvas>
    <script>
      var c = document.getElementById("exampleCanvas");
      var ctx = c.getContext("2d");
      var grd = ctx.createRadialGradient(150, 75, 10, 115, 90, 150);
      grd.addColorStop(0, "purple");
      grd.addColorStop(1, "white");
      ctx.fillStyle = grd;
      ctx.fillRect(20, 20, 220, 120);
    </script>
  </body>
</html>

Pratique

Quelles sont les caractéristiques et l'utilisation du Canvas HTML ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.