API Canvas

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

O API Canvas permite que o JavaScript desenhe gráficos no canvas.

O API Canvas pode desenhar formas, linhas, curvas, retângulos, 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 o 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 HTML DOM getElementById() para acessar o elemento <canvas>:

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

Para desenhar no canvas, você precisa criar o objeto de 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 de contexto 2D, você pode começar a desenhar no canvas.

O método fillRect() abaixo desenha um retângulo preto com o canto superior esquerdo 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

Usar 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-se 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 o traço.
shadowColor Definir ou retornar a cor usada para a sombra.
shadowBlur Definir ou retornar o nível de desfoque da sombra.
shadowOffsetX Configura ou retorna a distância horizontal da sombra para a forma.
shadowOffsetY Configura ou retorna a distância vertical da sombra para a forma.
Método Descrição
createLinearGradient() Cria um gradiente linear (usado para o conteúdo do canvas).
createPattern() Repete o elemento especificado na direção especificada.
createRadialGradient() Cria um gradiente radial/circular (usado para o conteúdo do canvas).
addColorStop() Especifica a cor e a posição de parada do objeto de gradiente.

Estilo de linha

Atributos Descrição
lineCap Configura ou retorna o estilo de cobertura do extremo da linha.
lineJoin Configura ou retorna o tipo de ângulo criado ao intersecção de duas linhas.
lineWidth Configura ou retorna a largura da linha atual.
miterLimit Configura ou retorna o comprimento máximo do canto.

Retângulo

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

Caminho

Método Descrição
fill() Preenche o gráfico atual (caminho).
stroke() De fato, desenha o caminho definido.
beginPath() Inicia um caminho ou redefine o caminho atual.
moveTo() Move o caminho para um ponto especificado no canvas, sem criar uma linha.
closePath() Cria um caminho que retorna ao ponto de partida.
lineTo() Adiciona um novo ponto e cria uma linha daquele ponto para o último ponto especificado no canvas.
clip() Recorta uma área de qualquer forma e tamanho da pincelada original.
quadraticCurveTo() Cria uma curva bézier de segundo grau.
bezierCurveTo() Cria uma curva bézier de terceiro grau.
arc() Cria um arco/curva (usado para criar círculos ou partes de círculos).
arcTo() Cria 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() Aumenta ou diminui o gráfico atual.
rotate() Gira o gráfico atual.
translate() Reinterpeta a posição (0,0) no canvas.
transform() Substitui a matriz de transformação atual de desenho.
setTransform() Redefine a transformação atual para a matriz unitária. Em seguida, execute transform().

Texto

Atributos Descrição
font Configura ou retorna as propriedades de fonte do conteúdo do texto atual.
textAlign Configura ou retorna 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 transparencia 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 atributos quanto eventos padrãoAtributoseEventos.

Páginas relacionadas

Tutorial HTML:Canvas HTML5

Tutorial de imagem HTML:Tutorial de Canvas HTML

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