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
- Configurando o Canvas e o contexto 2D
- Desenhando retângulos e caminhos
- Texto e imagens no Canvas
- Animação com requestAnimationFrame