MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

HTMLCanvasElement.getContext()

La méthode HTMLCanvasElement.getContext() retourne un contexte de dessin sur le canevas, ou null si l'identificateur de contexte n'est pas supporté.

Syntaxe

canvas.getContext(typeDeContexte, attributsDeContexte);

Paramètres

typeDeContexte
Est un DOMString contenant l'identifcateur de contexte définissant le contexte de dessin associé au canevas. Les valeurs possibles sont :
  • "2d", conduisant à la création d'un objet CanvasRenderingContext2D représentant un contexte de représentation bi-dimensionnel.
  • "webgl" (ou "experimental-webgl") pour créer un objet WebGLRenderingContext représentant un contexte de représentation tri-dimensionnel. Ce contexte est seulement disponible sur les navigateurs implémentant la version 1 de WebGL (OpenGL ES 2.0).
  • "webgl2" pour créer un objet WebGL2RenderingContext représentant un contexte de représentation tri-dimensionnel. Ce contexte est seulement disponible sur les navigateurs implémentant la version 2 de WebGL (OpenGL ES 3.0). .
  • "bitmaprenderer" pour créer un ImageBitmapRenderingContext ne fournissant que la fonctionnalité de remplacement du contenu du canevas par une ImageBitmap donnée.

Note : l'identificateur "experimental-webgl" est utilisé dans les nouvelles implémentations de WebGL. Ces implémentations n'ont pas encore obtenu la conformité à la suite de test, ou l'emploi des pilotes graphiques sur la plateforme n'est pas encore stable. Le Khronos Group certifie les implémentations WebGL sous certaines règles de conformité.

attributsDeContexte

Vous pouvez utiliser plusieurs attributs de contexte quand vous créez votre contexte de représentation, par exemple :

canvas.getContext('webgl', 
                 { antialias: false,
                   depth: false });
attributs de contexte 2d :
  • alpha : booléen indiquant que le canevas contient un canal alpha. Si positionné à false, le navigateur saura ainsi que l'arrière-plan est toujours opaque, ce qui peut alors accélérer le dessin de contenus et d'images transparents.
  • (Gecko seulement) willReadFrequently : booléen indiquant si de nombreuses opérations de relecture sont prévues ou non. Cela forcera l'utilisation d'un canevas 2D logiciel (au lieu d'un canevas accéléré matériellement) et peut faire économiser de la mémoire lors d'appels fréquents à getImageData(). Cette option est seulement disponible si l'indicateur gfx.canvas.willReadFrequently.enable est positionné à true (ce qui, par défaut, est seulement le cas pour B2G/Firefox OS).
  • (Blink seulement) storage : chaîne indiquant quel stockage est utilisé ("persistent" par défaut).
attributs de contexte WebGL :
  • alpha : booléen indiquant que le canevas contient un tampon alpha.
  • depth : booléen indiquant que le tampon de dessin a un tampon de profondeur d'au moins 16 bits.
  • stencil : booléen indiquant que le tampon de dessin a un tampon stencil d'au moins 8 bits.
  • antialias : booléen indiquant si un anti-aliasing doit être effectué ou non.
  • premultipliedAlpha : booléen indiquant que le composeur de page supposera que le tampon de dessin contient des couleurs avec alpha pré-multiplié.
  • preserveDrawingBuffer : si la valeur est is true, les tampons ne seront pas effacés et conserveront leurs valeurs jusqu'à ce qu'elles soient effacées ou réécrites par l'auteur.
  • failIfMajorPerformanceCaveat : booléen indiquant qu'un contexte sera créé si la performance du système est faible.

Valeur retournée :

Un RenderingContext, qui est soit un

Si le typeDeContexte ne correspond pas à un contexte de dessin possible, null est retourné.

Exemples

Étant donné l'élément <canvas> :

<canvas id="canvas" width="300" height="300"></canvas>

vous pouvez obtenir un contexte 2d du canevas grâce au code suivant :

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
console.log(ctx); // CanvasRenderingContext2D { ... }

Vous avez alors le contexte 2D de représentation pour un canevas, et vous pouvez dessiner à l'intérieur.

Spécifications

Spécification Statut Commentaire
WHATWG HTML Living Standard
La définition de 'HTMLCanvasElement.getContext' dans cette spécification.
Standard évolutif Pas de changement depuis l'instantané le plus récent, HTML5
HTML 5.1
La définition de 'HTMLCanvasElement.getContext' dans cette spécification.
Recommendation  
HTML5
La définition de 'HTMLCanvasElement.getContext' dans cette spécification.
Recommendation Instantané du WHATWG HTML Living Standard contenant la définition initiale.

Compatibilité navigateurs

Fonctionnalité Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Support de base (contexte 2d) 4 (Oui) 3.6 (1.9.2) 9 9 3.1
Contexte webgl 9[1]
33
(Oui) 3.6 (1.9.2)[1]
24 (24)
11.0[2] 9.0[3] 5.1[2]
Contexte webgl2 56 ? 25 (25)[4] Pas de support Pas de support Pas de support
Attribut de contexte alpha 2d 32 ? 30 (30) Pas de support (Oui) Pas de support

Attribut failIfMajorPerformanceCaveat

(Oui) ? 41 (41) (Oui) (Oui) ?
Contexte bitmaprenderer Pas de support ? 46 (46) Pas de support Pas de support Pas de support
Fonctionnalité Android Chrome pour Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support de base (contexte 2d) (Oui) (Oui) (Oui) 1.0 (1.9.2) (Oui) (Oui) (Oui)
Contexte webgl ? ? (Oui) (Oui)[2] ? ? ?
Contexte webgl2 Pas de support Pas de support ? Pas de support Pas de support Pas de support Pas de support
Attribut de contexte alpha 2d Pas de support Pas de support ? 30.0 (30) Pas de support Pas de support Pas de support
Attribut failIfMajorPerformanceCaveat ? ? ? 41.0 (41) ? ? ?
Contexte bitmaprenderer Pas de support Pas de support ? 46.0 (46) Pas de support Pas de support Pas de support

[1] Chrome 9 et Gecko 1.9.2 l'implémentaient initialement comme -webgl expérimental. Depuis Chrome 33 et Gecko 24, ils l'implémentent comme webgl standard.

[2] Internet Explorer 11, WebKit 5.1 et Firefox Mobile l'implémentaient comme -webgl expérimental.

[3] Opera 9 l'implémentait comme -webgl expérimental via une préférence utilisateur, dans la version 15.0, la préférence utilisateur a été supprimée.

[4] Gecko 25 l'implémentait comme "-webgl2 expérimental" via la préférence utilisateur webgl.enable-prototype-webgl2. A partir de Gecko 42, la chaîne "webgl2" est utilisée via la même préférence, et "experimental-webgl2" n'est plus accepté.

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : NemoNobobyPersonne
 Dernière mise à jour par : NemoNobobyPersonne,