Canvas

De Wikilipo
Aller à la navigation Aller à la recherche

Voici un fichier html qui crée une une aiguille qui tourne. On peut le regarder ici : http://infolipo.net/cours/canvas/canvas.html <source lang="javascript"> <html><head> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <script type="text/javascript">

function start(){
  var exemple = document.getElementById('exemple');
  
  // angle de l'aiguille
  var angle_en_degres = 0;
  function dessineImage(){
    // on change l'angle
    angle_en_degres = angle_en_degres + 2; 
    var angle_en_radians = angle_en_degres * Math.PI/180;
    dessineAiguille(angle_en_radians);
  }
  // executer 60 fois par seconde dessineImage 
  setInterval(dessineImage,1000/60);
  /* une autre manière de faire
  function dessineAvecTimeout(){
    setTimeout(dessineAvecTimeout,1000/60);
    dessineImage();
  }
  dessineAvecTimeout();
  */
}
function dessineAiguille(rotation){
 var exemple = document.getElementById('exemple');
 var contexte = exemple.getContext('2d');
 // on enlève tout ce qui est dessiné
 contexte.clearRect(0,0,exemple.width,exemple.height);
 // on enregistre l'état du canvas
 // pour pouvoir y retourner après
 contexte.save();
 // on se place au centre du canvas
 contexte.translate(exemple.width/2,exemple.height/2);
 // on dessine un rectangle au centre
 contexte.fillRect(-5, -5, 10, 10);
 // on tourne le canvas
 contexte.rotate(rotation);
 
 // on dessine l'aiguille
 // on commence un chemin
 contexte.beginPath();
 // on se déplace au centre 
 contexte.moveTo(0,0);
 // on tire un trait de 50 pixels vers la droite
 contexte.lineTo(0, 50);
 // on termine le chemin
 contexte.closePath();
 // on dessine le chemin
 contexte.stroke();
 // on dessine un rectangle de 10 pixels de coté
 // à une hauteur de -5 pour qu'il soit centré
 // et 50 pixels vers la droite pour qu'il soit 
 // au bout de l'aiguille
 contexte.fillRect(-5, 50, 10, 10);
 // on remet le canvas dans son état de départ
 // sans translation ni rotation
 contexte.restore();

} </script> </head> <body onload="start();"> <canvas id="exemple" width="200" height="200">

 Affichage d'un texte pour les navigateurs qui ne supportent pas canvas.

</canvas>

Voir aussi ce <a href="https://developer.mozilla.org/fr/Tutoriel_canvas">tutoriel</a>

</body> </source>