0Pricing
HTML Academy · Aula

Texto e imagens no Canvas

Renderize textos e desenhe imagens no canvas.

Texto e imagens no Canvas é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.

Desenhando texto

Defina a fonte: ctx.font = "bold 24px sans-serif". Desenhe com: ctx.fillText("Hello", x, y) ou ctx.strokeText("Hello", x, y). A coordenada y é a linha de base do texto — adicione a altura ascendente acima dela para posicionar o texto corretamente dentro de uma caixa delimitadora.

Alinhamento do texto

ctx.textAlign controla o alinhamento horizontal: "left" (padrão), "center", "right". ctx.textBaseline controla o alinhamento vertical em relação a y: "top", "middle", "alphabetic" (padrão), "bottom". Para centralizar o texto, defina ambos como "center" e "middle".

measureText para disposição

ctx.measureText("text") retorna um objeto TextMetrics com a largura e as métricas da fonte. Use-o para calcular dinamicamente as posições do texto — centralizar o texto em uma caixa, quebrá-lo em uma largura máxima ou alinhar rótulos à direita junto aos pontos de dados.

Quebra de texto

A tela não oferece quebra de texto integrada. Implemente-a: meça a largura das palavras, acumule-as até ultrapassar maxWidth e então passe para uma nova linha em intervalos de lineHeight. Essa é uma função utilitária comum em bibliotecas de renderização para telas.

Desenhando imagens

ctx.drawImage(image, dx, dy) desenha um HTMLImageElement, HTMLCanvasElement ou HTMLVideoElement em (dx, dy). Carregue a imagem primeiro e desenhe no manipulador onload para garantir que os pixels estejam disponíveis antes do desenho.

const img = new Image();
img.onload = () => ctx.drawImage(img, 0, 0);
img.src = "photo.jpg";

Redimensionando imagens

ctx.drawImage(image, dx, dy, dw, dh) redimensiona a imagem para caber em dw x dh. A preservação da proporção não é automática — calcule as dimensões manualmente. Para preservar a proporção: dw = img.width * scale; dh = img.height * scale.

Recortando imagens

drawImage com nove argumentos: ctx.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh). O retângulo de origem (sx, sy, sw, sh) recorta a imagem; o retângulo de destino (dx, dy, dw, dh) posiciona e redimensiona o recorte na tela.

Suavização de imagens

ctx.imageSmoothingEnabled = false desativa a interpolação bilinear ao redimensionar imagens. Use-o para arte em pixels quando desejar um redimensionamento nítido e sem suavização. Deixe-o ativado (padrão) para imagens fotográficas, nas quais o redimensionamento suave tem melhor aparência.

Tela como origem de imagem

Passe uma tela como origem para drawImage — renderizando uma tela sobre outra. Isso permite a renderização fora da tela: desenhe composições complexas em uma tela oculta e depois desenhe essa tela na tela visível em uma única operação a cada quadro.

globalAlpha e composição

ctx.globalAlpha (de 0 a 1) aplica transparência uniforme a todos os desenhos subsequentes. ctx.globalCompositeOperation controla como os novos desenhos se misturam aos pixels existentes: "source-over" (padrão), "multiply", "screen", "destination-out" (apagar) e outros.

toDataURL para exportação

canvas.toDataURL("image/png") exporta a tela como uma URL de dados PNG em base64. Use-a para um download iniciado pelo usuário: crie uma âncora, defina href como a URL de dados e o atributo download como um nome de arquivo e então clique nela programaticamente.

Verificação de conhecimento

O que ctx.textBaseline = "middle" afeta ao desenhar texto?

Resumo

A renderização de texto na tela usa ctx.font, fillText/strokeText, textAlign e textBaseline para posicionamento, além de measureText para cálculos de disposição. O desenho de imagens com drawImage permite redimensionamento e recorte; globalAlpha e globalCompositeOperation controlam a mistura. toDataURL exporta a tela para download ou uso posterior.

Perguntas Frequentes

A aula “Texto e imagens no Canvas” é grátis?

Sim — o texto completo de “Texto e imagens no Canvas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.

O que vou aprender em “Texto e imagens no Canvas”?

Renderize textos e desenhe imagens no canvas. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar HTML Academy?

Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Texto e imagens no Canvas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de HTML Academy?

Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configurando o Canvas e o contexto 2D
  2. Desenhando retângulos e caminhos
  3. Texto e imagens no Canvas
  4. Animação com requestAnimationFrame
← Voltar para HTML Academy