Objeto Canvas do DOM HTML

O elemento <canvas> define uma área de bitmap na página HTML.

O API Canvas permite que o JavaScript desenhe gráficos na tela.

O API Canvas pode desenhar formas, linhas, curvas, caixas, texto e imagens, além de cores, rotação, transparência e outras operações de pixels.

Adicionar Canvas ao HTML

Você pode usar a tag <canvas> para adicionar um elemento canvas em qualquer local da página HTML:

Exemplo

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

Experimente pessoalmente

Como acessar o elemento Canvas

Você pode usar o método getElementById() do DOM HTML para acessar o elemento <canvas>:

const myCanvas = document.getElementById("myCanvas");

Para desenhar no canvas, você precisa criar o objeto contexto 2D:

const ctx = myCanvas.getContext("2d");

Notas

O elemento HTML <canvas> não tem funcionalidade de desenho.

Você deve usar JavaScript para desenhar qualquer gráfico.

O método getContext() retorna um objeto com ferramentas de desenho (métodos).

Desenhar no canvas

Após criar o objeto contexto 2D, você pode desenhar no canvas.

O método fillRect() abaixo desenha um retângulo preto, cujo canto superior esquerdo está na posição 20,20. O retângulo tem 150 pixels de largura e 100 pixels de altura:

Exemplo

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillRect(20, 20, 150, 100);

Experimente pessoalmente

Usando cor

A propriedade fillStyle define a cor de preenchimento do objeto de desenho:

Exemplo

const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

Experimente pessoalmente

Você também pode usar o método document.createElement() para criar um novo elemento <canvas> e adicioná-lo à página HTML existente:

Exemplo

const myCanvas = document.createElement("canvas");
document.body.appendChild(myCanvas);
const ctx = myCanvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(20, 20, 150, 100);

Experimente pessoalmente

Caminho

Os métodos comuns para desenhar no canvas são:

  1. Iniciar um caminho - beginPath()
  2. Mover para um ponto - moveTo()
  3. Desenhar dentro do caminho - lineTo()
  4. Desenhar um caminho - stroke()

Exemplo

const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineTo(20, 100);
ctx.lineTo(70, 100);
ctx.stroke();

Experimente pessoalmente

Cor, estilo e sombra

Atributos Descrição
fillStyle Definir ou retornar a cor, gradiente ou padrão usados para preencher o desenho.
strokeStyle Definir ou retornar a cor, gradiente ou padrão usados para a tração.
shadowColor Definir ou retornar a cor usada para a sombra.
shadowBlur Definir ou retornar o nível de desfoque da sombra.
shadowOffsetX Definir ou retornar a distância horizontal da sombra para a forma.
shadowOffsetY Definir ou retornar a distância vertical da sombra para a forma.
Método Descrição
createLinearGradient() Criar um gradiente linear (usado para o conteúdo do canvas).
createPattern() Repetir o elemento especificado na direção especificada.
createRadialGradient() Criar um gradiente radial/circular (usado para o conteúdo do canvas).
addColorStop() Especificar as cores e as posições de parada no objeto de gradiente.

Estilo de linha

Atributos Descrição
lineCap Definir ou retornar o estilo de extremidade da linha.
lineJoin Definir ou retornar o tipo de ângulo criado ao intersectar duas linhas.
lineWidth Definir ou retornar a largura da linha atual.
miterLimit Definir ou retornar o comprimento máximo do canto de transição.

Retângulo

Método Descrição
rect() Criar um retângulo.
fillRect() Desenhar um retângulo 'preenchido'.
strokeRect() Desenhar um retângulo (sem preenchimento).
clearRect() Limpar os pixels especificados dentro do retângulo dado.

Caminho

Método Descrição
fill() Preencher o gráfico atual (caminho).
stroke() De fato, desenhar o caminho definido.
beginPath() Iniciar um caminho ou redefinir o caminho atual.
moveTo() Mover o caminho para um ponto específico no canvas sem criar uma linha.
closePath() Criar um caminho que retorna ao ponto de partida a partir do ponto atual.
lineTo() Adicionar um novo ponto e criar uma linha daquele ponto para o último ponto especificado no canvas.
clip() Cortar uma área de qualquer forma e tamanho da superfície original.
quadraticCurveTo() Criar uma curva bézier de segundo grau.
bezierCurveTo() Criar uma curva bézier de terceiro grau.
arc() Criar um arco/curva (usado para criar círculos ou partes de círculos).
arcTo() Criar um arco/curva entre duas tangentes.
isPointInPath() Retorna true se o ponto especificado estiver no caminho atual, caso contrário, retorna false.

Transformação

Método Descrição
scale() Aumentar ou diminuir o gráfico atual.
rotate() Rotacionar o gráfico atual.
translate() Re-mapear a posição (0,0) no canvas.
transform() Substituir a matriz de transformação atual do desenho.
setTransform() Restabelecer a transformação atual para a matriz unitária. Em seguida, execute transform().

Texto

Atributos Descrição
font Definir ou retornar as propriedades de fonte do conteúdo do texto atual.
textAlign Definir ou retornar o alinhamento atual do conteúdo do texto.
textBaseline Define ou retorna a linha de base atual usada para desenhar texto.
Método Descrição
fillText() Desenha texto 'preenchido' no canvas.
strokeText() Desenha texto no canvas (sem preenchimento).
measureText() Retorna um objeto que contém a largura do texto especificado.

Desenho de imagem

Método Descrição
drawImage() Desenha uma imagem, canvas ou vídeo no canvas.

Operações de pixels

Atributos Descrição
width Retorna a largura do objeto ImageData.
height Retorna a altura do objeto ImageData.
data Retorna um objeto que contém os dados da imagem do objeto ImageData especificado.
Método Descrição
createImageData() Cria um novo objeto ImageData vazio.
getImageData() Retorna um objeto ImageData, que copia os dados de pixels de um retângulo especificado no canvas.
putImageData() Coloca os dados da imagem (do objeto ImageData especificado) de volta no canvas.

Composição

Atributos Descrição
globalAlpha Define ou retorna o valor atual de alpha ou transparência do desenho.
globalCompositeOperation Define ou retorna como a nova imagem será desenhada sobre a imagem existente.

Outros

Método Descrição
save() Salva o estado atual do contexto.
restore() Retorna o estado e as propriedades do caminho salvo anteriormente.
createEvent()
getContext()
toDataURL()

Atributos e eventos padrão

O objeto canvas suporta tanto os padrõesAtributoseEventos.

Páginas relacionadas

Tutorial HTML:Canvas HTML5

Tutorial de imagem HTML:Tutorial do Canvas HTML

Manual de referência HTML:Tag <canvas> do HTML