--- title: HTMLCanvasElement.getContext() slug: Web/API/HTMLCanvasElement/getContext translation_of: Web/API/HTMLCanvasElement/getContext ---
El método HTMLCanvasElement.getContext()
retorna un contexto de dibujo en el lienzo, o {{jsxref("null")}} si el identificador del contexto no está soportado.
canvas.getContext(contextType, contextAttributes);
"2d
", dando lugar a la creación de un objeto {{domxref("CanvasRenderingContext2D")}} que representa un contexto de renderizado de dos dimensiones."webgl"
(o "experimental-webgl"
) el cual creará un objeto {{domxref("WebGLRenderingContext")}} que representa un contexto de renderizado de tres dimensiones. Este contexto sólo está disponible en navegadores que implementan WebGL version 1 (OpenGL ES 2.0).webgl2
" (o "experimental-webgl2
") el cual creará un objeto {{domxref("WebGL2RenderingContext")}} que representa un contexto de renderizado de tres dimensiones. Este contexto sólo está disponible en navegadores que implementan WebGL version 2 (OpenGL ES 3.0). {{experimental_inline}}"bitmaprenderer"
el cuál creará un {{domxref("ImageBitmapRenderingContext")}} que únicamente provee funcionalidad para remplazar el contenido del lienzo con un {{domxref("ImageBitmap")}} dado.Nota: Los identificadores "experimental-webgl
" o "experimental-webgl2
" son usados en nuevas implementaciones de WebGL. Estas implementaciones no han logrado aprobar el conjunto de pruebas de conformidad o la situación de los controladores gráficos en la plataforma no es estable aun. Khronos Group certifica las implementaciones de WebGL bajo ciertas reglas de conformidad.
contextAttributes
Puedes usar varios atributos al momento de crear tu contexto de renderizado. Por ejemplo:
canvas.getContext('webgl', { antialias: false, depth: false });Atributos del contexto 2d:
alpha
: Booleano que indica si el lienzo contiene canal alfa. Si es asignado falso, el naveagdor sabe que el fondo siempre es opaco, lo cual puede acelerar el dibujado de contenido transparente e imágenes.willReadFrequently
: Booleano que indica si muchas operaciones de read-back están planeadas o no. Esto forzará el uso de software (en lugar de aceleración de hardware) y puede ahorrar memoria al llamar {{domxref("CanvasRenderingContext2D.getImageData", "getImageData()")}} constantemente. Esta opción solo está disponible si gfx.canvas.willReadFrequently.enable
es verdadero(lo cual solo está asignado por defecto en B2G/Firefox OS).storage
: Cadena que indica si el almacenamiento es usado ("persistent" por defecto).alpha
: Booleano que indica si el lienzo contiene un buffer alfa.depth
: Booleano que indica si el buffer de dibujo tiene un buffer de profundidad de al menos 16 bits.stencil
: Booleano que indica si el buffer de dibujo tiene un stencil de al menos 8 bits.antialias
: Booleano que indica si se debe aplicar anti-aliasing.premultipliedAlpha
: Booleano que indica que el compositor de páginas asumirá que el buffer de dibujo contiene colores con alfa premultiplicado.preserveDrawingBuffer
: Si es verdadero los buffers no se limpiarán y mantendrán sus valores hasta que el autor los limpie o los sobreescriba.failIfMajorPerformanceCaveat
: Booleano que indica si un contexto será creado si el rendimiento del sistema es bajo.
Un {{domxref("RenderingContext")}} que puede ser:
"2d"
,"webgl"
y "experimental-webgl"
,"webgl2"
y "experimental-webgl2"
, o"bitmaprenderer"
.Si contextType no corresponde con un posible contexto de dibujo retorna null.
Dado este elemento {{HTMLElement("canvas")}}:
<canvas id="canvas" width="300" height="300"></canvas>
Puedes obtener un contexto 2d del canvas con el código siguiente:
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); console.log(ctx); // CanvasRenderingContext2D { ... }
Ahora tienes el contexto de renderizado 2D para un canvas y puedes dibujar en él.
Especificación | Estado | Comentarios |
---|---|---|
{{SpecName('HTML WHATWG', "scripting.html#dom-canvas-getcontext", "HTMLCanvasElement.getContext")}} | {{Spec2('HTML WHATWG')}} | Sin cambios desde el último snapshot, {{SpecName('HTML5 W3C')}} |
{{SpecName('HTML5.1', "scripting-1.html#dom-canvas-getcontext", "HTMLCanvasElement.getContext")}} | {{Spec2('HTML5.1')}} | |
{{SpecName('HTML5 W3C', "scripting-1.html#dom-canvas-getcontext", "HTMLCanvasElement.getContext")}} | {{Spec2('HTML5 W3C')}} | Snapshot del {{SpecName('HTML WHATWG')}} que contiene la definición inicial. |
{{CompatibilityTable}}
Característica | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic support (2d context) |
{{CompatChrome(4)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("1.9.2")}} | {{CompatIE(9)}} | {{CompatOpera(9)}} | {{CompatSafari(3.1)}} |
webgl context |
{{CompatChrome(9)}}[1] {{CompatChrome(33)}} |
{{CompatVersionUnknown}} | {{CompatGeckoDesktop('1.9.2')}}[1] {{CompatGeckoDesktop('24')}} |
11.0[2] | 9.0[3] | 5.1[2] |
webgl2 context {{experimental_inline}} |
{{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoDesktop('25')}}[4] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
2d alpha context attribute |
32 | {{CompatUnknown}} | {{CompatGeckoDesktop(30)}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} |
|
{{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatGeckoDesktop(41)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
bitmaprenderer context | {{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoDesktop(46)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support (2d context) |
{{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("1.9.2")}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
webgl context |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}}[2] | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
webgl2 context {{experimental_inline}} |
{{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
2d alpha context attribute |
{{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoMobile(30)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
failIfMajorPerformanceCaveat attribute |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile(41)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
bitmaprenderer context | {{CompatNo}} | {{CompatNo}} | {{CompatUnknown}} | {{CompatGeckoMobile(46)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] Chrome 9 y Gecko 1.9.2 inicialmente implementaron esta como experimental-webgl
. A partir de Chrome 33 y Gecko 24 es implementado como webgl
estándar.
[2] Internet Explorer 11, WebKit 5.1 y Firefox Mobile implementaron esto como experimental-webgl
.
[3] Opera 9 implementó esto como experimental-webgl
, behind a user preference, in version 15.0 the user preference got removed.
[4] Gecko 25 implements this as "experimental-webgl2
" behind the user preference webgl.enable-prototype-webgl2
. Starting with Gecko 42, the string "webgl2" is used behind the same preference.