--- title: HTMLCanvasElement.getContext() slug: Web/API/HTMLCanvasElement/getContext tags: - API - Canvas - HTMLCanvasElement - Referencia - metodo translation_of: Web/API/HTMLCanvasElement/getContext ---
O metodo HTMLCanvasElement.getContext()
retorna um contexto de desenho no canvas, ou {{jsxref("null")}} se o contexto identificado não é suportado.
canvas.getContext(contextType, contextAttributes);
"2d"
, levando a criação de um objeto {{domxref("CanvasRenderingContext2D")}} representando uma renderização bidimensional."webgl"
(or "experimental-webgl"
) que criará um objeto {{domxref("WebGLRenderingContext")}} representando uma renderização tridimensional. Esse contexto está disponivel somente em browsers que implementam WebGL versão 1 (OpenGL ES 2.0)."webgl2"
que criará um objeto {{domxref("WebGL2RenderingContext")}} representando uma renderização tridimensional. Esse contexto está disponivel somente em browsers que implementam WebGL versão 2 (OpenGL ES 3.0). {{experimental_inline}}"bitmaprenderer"
que criará um {{domxref("ImageBitmapRenderingContext")}} que apenas provê a funcionalidade de substituir o conteúdo do canvas pelo de um {{domxref("ImageBitmap")}}.Note: O identificador "experimental-webgl
" é usado em novas implementações do WebGL. Essas implementações ou ainda não passaram nos casos de teste, ou os drivers gráficos na plataforma ainda não estão estáveis. O Khronos Group certifica as implementações do WebGL sob certas regas de conformidade.
contextAttributes
Você pode usar alguns atributos de contexto quando criar o seu contexto de renderização, por exemplo:
canvas.getContext('webgl', { antialias: false, depth: false });Atributos de contexto 2d:
alpha
: Boleano que indica se o canvas contém um canal alfa. Se definido como false
, o browser saberá que o resultado será sempre opaco, o que pode acelerar o desenho de conteudo transparente e imagens.willReadFrequently
: Boleano que indica quando uma série de operações read-back estão planejadas. Isso forçará o uso de renderização 2D no canvas via software (ao invés de utilizar GPU) o que pode salvar memoria quando {{domxref("CanvasRenderingContext2D.getImageData", "getImageData()")}} for chamado frequentemente. Essa opção está disponivel somente, se a flag gfx.canvas.willReadFrequently.enable
está definida como true
(o que, por padrão, é o caso do B2G/Firefox OS apenas).storage
: String que indica qual storage é usado ("persistent" por padrão).alpha
: Boleano que indica se o canvas contém um buffer alfa.depth
: Boleano que indica que o buffer do desenho tem um buffer de profundidade de pelo menos 16 bits.stencil
: Boleano que indica que o buffer do desenho tem um buffer de stencil de pelo menos 8 bits.antialias
: Boleano que indica se deve realizar o anti-aliasing ou não.premultipliedAlpha
: Boleano que indica se o compositor da página vai assumir que o buffer do desenho contendo cores com alfa pré-multiplicado.preserveDrawingBuffer
: Se o valor é true
os buffers não serão limpos e preservarão seus valores até serem limpos ou subrescritos pelo autor.failIfMajorPerformanceCaveat
: Boleano que indica se um contexto será criado se a performance do sistema for baixa.
Um {{domxref("RenderingContext")}} que pode ser:
"2d"
,"webgl"
e "experimental-webgl"
,"webgl2"
ou"bitmaprenderer"
.Se o contextType não bater com um possivel contexto de desenho,null
é retornado.
Dado este elemento {{HTMLElement("canvas")}}:
<canvas id="canvas" width="300" height="300"></canvas>
Você pega um contexto 2d
do canvas com o código a seguir:
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); console.log(ctx); // CanvasRenderingContext2D { ... }
Agora você tem contexto de renderização 2d para o canvas e você pode desenhar nele.
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', "scripting.html#dom-canvas-getcontext", "HTMLCanvasElement.getContext")}} | {{Spec2('HTML WHATWG')}} | Nenhuma mudança desde o ultimo 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 do {{SpecName('HTML WHATWG')}} contendo a definição inicial. |
{{CompatibilityTable}}
Feature | 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 |
{{CompatChrome(56)}} | {{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 |
{{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 e Gecko 1.9.2 inicialmente implementaram isso como um experimental-webgl
. Desde o Chrome 33 e Gecko 24 é implementado como definido pelo padrão: webgl
.
[2] Internet Explorer 11, WebKit 5.1 e Firefox Mobile implementaram isso como um experimental-webgl
.
[3] Opera 9 implementou isso como um experimental-webgl
, ativado nas preferencias do usuario, na versão 15.0 a preferencia de usuario foi removida.
[4] Gecko 25 implementou isso como um "experimental-webgl2
" ativado na preferencia do usuario webgl.enable-prototype-webgl2
. Apartir do Gecko 42, a string "webgl2
"é usada na mesma configuração e "experimental-webgl2
" não é mais aceito.