SlideShare une entreprise Scribd logo
HTML5
Introduction à la balise
<canvas>
François CREVOLA
<html>
<body>
<canvas id="canvas1" width="500"
height="500">
Texte alternatif pour les navigateurs ne
supportant pas Canvas.
</canvas>
</body>
</html>
En pratique ….
En pratique …. le canvas est une zone rectangulaire
(transparente) que l'on peut modifier dynamiquement (c'est à
dire sur laquelle on peut dessiner / écrire / … bref agir !) via
un script (javascript).
Type d'élément pris en charge nativement par le navigateur,
ne nécessite donc pas un plug-in (comme Flash et Java qui
peuvent être vus comme des technologies concurrentes)
<html>
<body>
<canvas id="canvas1" width="500"
height="500">
</canvas>
<script type="text/javascript">
var c = document.getElementById("canvas1");
var ctx = c.getContext("2d");
// La suite ...
</script>
</body>
</html>
En pratique …. accéder au canvas et jouer avec.
Identifiant du canvas
Il existe aussi un contexte 3D
appelé « webgl »
…
ctx.beginPath();
ctx.moveTo(50,200);
ctx.lineTo(125,50);
ctx.lineTo(200,200);
ctx.stroke();
...
Des lignes...
Différents styles, couleurs, ...
ctx.fillStyle = « ... »
ctx.fill() ;
ctx.strokeStyle = « ... »
ctx.stroke() ;
Des formes ...
ctx.fillRect(x,y,w,h) ; ctx.arc(x,y,r,startAngle,endAngle,isClockwise) ;
Courbe quadratique, Courbe de Bézier ...
Gestion d’événements souris : click, déplacement, ...
<script type="text/javascript">
var c = document.getElementById("canvas1");
var ctx = c.getContext("2d");
c.addEventListener("click", ev_mouseclick, false);
function ev_mouseclick(ev) {
…
}
</script>
addEventListener(type, listener, useCapture) ;
type peut être : click, move, mouseup, mousedown, mouseout, mouseover, …
listener : fonction à appeler lorsque l'évènement se produit
useCapture : booléen true/false pour propagation à un autre niveau (tjrs 'false'
dans nos exemples)
Gestion d’événements clavier
addEventListener(type, listener, useCapture) ;
type peut être : keydown, keyup, …
listener : fonction à appeler lorsque l'évènement se produit
useCapture : booléen true/false pour propagation à un autre niveau (tjrs 'false'
dans nos exemples)
ATTENTION : le canvas ne peut recevoir les événements clavier que s'il a le focus
(ou « keyboard focus »). Sinon, on peut gérer les événements claviers sur la
fenêtre (objet 'window') et agir quand-même sur le canvas en réponse à ces
événements.
Images : affichage, déplacement, filtrage, ..
img = new Image() ;
img.src = 'filename.jpg' ;
ctx.drawRect(img,x,y,width,height) ;
Si width et height sont différent de la taille d'origine, cela retaille automatiquement 
l'image à la taille voulue : très pratique !
Il existe aussi un appel à 6 paramètres permettant de faire du 'clipping' (c'est à 
dire prendre un morceau définit de l'image et non l'image entière)
ATTENTION : Il est nécessaire de gérer l'évènement onLoad sur l'image, afin de ne 
la dessiner que si son chargement est terminé !
Traitements bruts sur l'image :
imgData = ctx.getImageData(x,y,width,height) ;
<...traitements....>
ctx.putImageData(imgData,x,y) ;
Les frameworks
KyneticJs
PaperJs
ProcessingJs

Contenu connexe

En vedette

Apuntes topografia
Apuntes topografiaApuntes topografia
Apuntes topografia
Heiser HQ
 
231007 ABC
231007 ABC231007 ABC
231007 ABC
Monica Fernandez
 
Bimba kids 17-01-2016 - mordomos da criação
Bimba kids   17-01-2016 - mordomos da criaçãoBimba kids   17-01-2016 - mordomos da criação
Bimba kids 17-01-2016 - mordomos da criação
Regina Lissone
 
CDP+++, Módulo 1 Clase 9
CDP+++, Módulo 1 Clase 9CDP+++, Módulo 1 Clase 9
CDP+++, Módulo 1 Clase 9
Academia de Permacultura Integral
 
Dainik jagran ppt
Dainik jagran pptDainik jagran ppt
Dainik jagran ppt
Rohit Sachdeva
 
2012 03 07_gruzja_gory_czarna
2012 03 07_gruzja_gory_czarna2012 03 07_gruzja_gory_czarna
2012 03 07_gruzja_gory_czarna
Marek Kowolik
 
Finalshow
FinalshowFinalshow
Finalshow
prakhargoel96
 
Formulario 3C
Formulario 3CFormulario 3C
Buffer Overflow Countermeasures, DEP, Security Assessment
Buffer Overflow Countermeasures, DEP, Security AssessmentBuffer Overflow Countermeasures, DEP, Security Assessment
Buffer Overflow Countermeasures, DEP, Security Assessment
Amar Myana
 

En vedette (10)

Apuntes topografia
Apuntes topografiaApuntes topografia
Apuntes topografia
 
231007 ABC
231007 ABC231007 ABC
231007 ABC
 
Bimba kids 17-01-2016 - mordomos da criação
Bimba kids   17-01-2016 - mordomos da criaçãoBimba kids   17-01-2016 - mordomos da criação
Bimba kids 17-01-2016 - mordomos da criação
 
CDP+++, Módulo 1 Clase 9
CDP+++, Módulo 1 Clase 9CDP+++, Módulo 1 Clase 9
CDP+++, Módulo 1 Clase 9
 
VULLKANET
VULLKANETVULLKANET
VULLKANET
 
Dainik jagran ppt
Dainik jagran pptDainik jagran ppt
Dainik jagran ppt
 
2012 03 07_gruzja_gory_czarna
2012 03 07_gruzja_gory_czarna2012 03 07_gruzja_gory_czarna
2012 03 07_gruzja_gory_czarna
 
Finalshow
FinalshowFinalshow
Finalshow
 
Formulario 3C
Formulario 3CFormulario 3C
Formulario 3C
 
Buffer Overflow Countermeasures, DEP, Security Assessment
Buffer Overflow Countermeasures, DEP, Security AssessmentBuffer Overflow Countermeasures, DEP, Security Assessment
Buffer Overflow Countermeasures, DEP, Security Assessment
 

Similaire à HTML5 - Introduction à la balise canvas

Les evenements.pdf
Les evenements.pdfLes evenements.pdf
Les evenements.pdf
MiRA452885
 
WPF.pptx
WPF.pptxWPF.pptx
WPF.pptx
AmeniRajhi1
 
Cours JavaScript.ppt
Cours JavaScript.pptCours JavaScript.ppt
Cours JavaScript.ppt
PROFPROF11
 
5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
Chaikhani Ibtissam
 
Cours JavaScript 2.ppt
Cours JavaScript 2.pptCours JavaScript 2.ppt
Cours JavaScript 2.ppt
PROFPROF11
 
Responsive design, Canvas et SVG
Responsive design, Canvas et SVGResponsive design, Canvas et SVG
Responsive design, Canvas et SVGChristian SUMBANG
 
JavaSwing.pdf
JavaSwing.pdfJavaSwing.pdf
JavaSwing.pdf
imanebirjmel
 
Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3
davrous
 
cour-DOM-Partie6.pdf
cour-DOM-Partie6.pdfcour-DOM-Partie6.pdf
cour-DOM-Partie6.pdf
AbderrezakChelouche
 

Similaire à HTML5 - Introduction à la balise canvas (9)

Les evenements.pdf
Les evenements.pdfLes evenements.pdf
Les evenements.pdf
 
WPF.pptx
WPF.pptxWPF.pptx
WPF.pptx
 
Cours JavaScript.ppt
Cours JavaScript.pptCours JavaScript.ppt
Cours JavaScript.ppt
 
5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Cours JavaScript 2.ppt
Cours JavaScript 2.pptCours JavaScript 2.ppt
Cours JavaScript 2.ppt
 
Responsive design, Canvas et SVG
Responsive design, Canvas et SVGResponsive design, Canvas et SVG
Responsive design, Canvas et SVG
 
JavaSwing.pdf
JavaSwing.pdfJavaSwing.pdf
JavaSwing.pdf
 
Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3
 
cour-DOM-Partie6.pdf
cour-DOM-Partie6.pdfcour-DOM-Partie6.pdf
cour-DOM-Partie6.pdf
 

Dernier

Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
Horgix
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 

Dernier (6)

Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 

HTML5 - Introduction à la balise canvas

  • 1. HTML5 Introduction à la balise <canvas> François CREVOLA
  • 2.
  • 3.
  • 4.
  • 5. <html> <body> <canvas id="canvas1" width="500" height="500"> Texte alternatif pour les navigateurs ne supportant pas Canvas. </canvas> </body> </html> En pratique ….
  • 6. En pratique …. le canvas est une zone rectangulaire (transparente) que l'on peut modifier dynamiquement (c'est à dire sur laquelle on peut dessiner / écrire / … bref agir !) via un script (javascript). Type d'élément pris en charge nativement par le navigateur, ne nécessite donc pas un plug-in (comme Flash et Java qui peuvent être vus comme des technologies concurrentes)
  • 7. <html> <body> <canvas id="canvas1" width="500" height="500"> </canvas> <script type="text/javascript"> var c = document.getElementById("canvas1"); var ctx = c.getContext("2d"); // La suite ... </script> </body> </html> En pratique …. accéder au canvas et jouer avec. Identifiant du canvas Il existe aussi un contexte 3D appelé « webgl »
  • 9. Différents styles, couleurs, ... ctx.fillStyle = « ... » ctx.fill() ; ctx.strokeStyle = « ... » ctx.stroke() ;
  • 10. Des formes ... ctx.fillRect(x,y,w,h) ; ctx.arc(x,y,r,startAngle,endAngle,isClockwise) ; Courbe quadratique, Courbe de Bézier ...
  • 11. Gestion d’événements souris : click, déplacement, ... <script type="text/javascript"> var c = document.getElementById("canvas1"); var ctx = c.getContext("2d"); c.addEventListener("click", ev_mouseclick, false); function ev_mouseclick(ev) { … } </script> addEventListener(type, listener, useCapture) ; type peut être : click, move, mouseup, mousedown, mouseout, mouseover, … listener : fonction à appeler lorsque l'évènement se produit useCapture : booléen true/false pour propagation à un autre niveau (tjrs 'false' dans nos exemples)
  • 12. Gestion d’événements clavier addEventListener(type, listener, useCapture) ; type peut être : keydown, keyup, … listener : fonction à appeler lorsque l'évènement se produit useCapture : booléen true/false pour propagation à un autre niveau (tjrs 'false' dans nos exemples) ATTENTION : le canvas ne peut recevoir les événements clavier que s'il a le focus (ou « keyboard focus »). Sinon, on peut gérer les événements claviers sur la fenêtre (objet 'window') et agir quand-même sur le canvas en réponse à ces événements.
  • 13. Images : affichage, déplacement, filtrage, .. img = new Image() ; img.src = 'filename.jpg' ; ctx.drawRect(img,x,y,width,height) ; Si width et height sont différent de la taille d'origine, cela retaille automatiquement  l'image à la taille voulue : très pratique ! Il existe aussi un appel à 6 paramètres permettant de faire du 'clipping' (c'est à  dire prendre un morceau définit de l'image et non l'image entière) ATTENTION : Il est nécessaire de gérer l'évènement onLoad sur l'image, afin de ne  la dessiner que si son chargement est terminé ! Traitements bruts sur l'image : imgData = ctx.getImageData(x,y,width,height) ; <...traitements....> ctx.putImageData(imgData,x,y) ;