Desenhando Texto - JavaScript
Além de desenhar formas geométricas e imagens, o canvas
font
canvas
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "22px Verdana";
A propriedade font
Para exibir o texto, são utilizados dois métodos:
: Recebe três parâmetros: o texto a ser exibido (parâmetrofillText(text, x, y)
) e as coordenadas do ponto de origem do texto (text
ex
).y
: Recebe os mesmos parâmetros.strokeText(text, x, y)
A diferença entre os dois métodos está no modo como o texto é desenhado. O método fillText()
fillStyle
strokeText()
strokeStyle
Exemplo de uso do fillText()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Exemplo de Texto no Canvas</title>
</head>
<body>
<canvas id="canvas" width="400" height="250"></canvas>
<script>
const canvas = document.getElementById('canvas');
const context = canvas.getContext('2d');
context.font = '30px Verdana';
context.fillStyle = 'navy'; // define a cor do texto
context.fillText('Hello Programício', 20, 50);
</script>
</body>
</html>
Exemplo de uso do strokeText()
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "30px Verdana";
context.strokeStyle = "navy"; // define a cor do contorno
context.strokeText("Hello Programício", 20, 50);
Propriedade textAlign
A propriedade textAlign
: O texto começa na posição especificada.left
: O texto termina antes da posição especificada.right
: O texto é centralizado em relação à posição especificada.center
: Valor padrão, o texto começa na posição especificada.start
: O texto termina antes da posição especificada.end
var canvas = document.getElementById("myCanvas"),
context = canvas.getContext("2d");
context.font = "22px Verdana";
context.textAlign = "right";
context.fillText("Right Text", 120, 30);
context.textAlign = "left";
context.fillText("Left Text", 120, 60);
context.textAlign = "center";
context.fillText("Center Text", 120, 90);
context.textAlign = "start";
context.fillText("Start Text", 120, 120);
context.textAlign = "end";
context.fillText("End Text", 120, 150);
A diferença entre os valores start
left
Propriedade textBaseline
A propriedade textBaseline
top
middle
bottom
alphabetic
hanging
ideographic
Exemplo de uso da propriedade textBaseline:
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "22px Verdana";
context.textBaseline = "top";
context.fillText("Top", 10, 100);
context.textBaseline = "bottom";
context.fillText("Bottom", 45, 100);
context.textBaseline = "middle";
context.fillText("Middle", 130, 100);
context.textBaseline = "alphabetic";
context.fillText("Alphabetic", 205, 100);
context.textBaseline = "hanging";
context.fillText("Hanging", 320, 100);
Determinando a largura do texto
Para medir a largura do texto que será exibido no canvas, pode-se utilizar o método measureText()
const canvas = document.getElementById("canvas");
const context = canvas.getContext("2d");
context.font = "18px Verdana";
const text = context.measureText("Hello JavaScript");
console.log(text.width);