Siguiendo con los tutoriales sobre el elemento canvas de HTML5 en este post vamos a ver cómo escribir texto sobre el canvas, o mejor dicho, dibujar texto sobre el canvas.
Vamos a personalizar la fuente y el color, así como las coordenadas en donde el texto comienza.
Los métodos que veremos son strokeText y fillText.
Función strokeText y fillText
Estas funciones tienen la misma sintaxis, y reciben los siguientes argumentos en el orden que aparecen:
- El texto, como cadena
- Coordenada x
- Coordenada y
La diferencia entre strokeText y fillText es que strokeText dibuja solo el borde del texto, y fillText lo dibuja relleno.
Colores y fuentes
Para controlar el color del texto que se dibuja sobre el canvas de HTML se establece la propiedad strokeStyle y fillStyle en el nombre de un color o su valor hexadecimal, entre otros.
La fuente se establece con font, y es algo como: “20px Arial”
Ejemplo de texto en Canvas
Veamos el código a continuación, el cual escribe texto sobre el canvas.
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width">
	<title>Texto en Canvas</title>
</head>
<body>
	<h1>Texto en Canvas usando JavaScript</h1>
	<a href="https://parzibyte.me/blog/">By Parzibyte</a>
	<br/>
	<canvas id="canvas"></canvas>
	<script src="script.js">
	</script>
</body>
</html>
/**
 * Ejercicios con Canvas y JavaScript: texto
 * 
 * https://parzibyte.me/blog/
*/
const ALTURA_CANVAS = 200,
	ANCHURA_CANVAS = 400;
// Obtener el elemento del DOM
const canvas = document.querySelector("#canvas");
canvas.width = ANCHURA_CANVAS;
canvas.height = ALTURA_CANVAS;
// Del canvas, obtener el contexto para poder dibujar
const contexto = canvas.getContext("2d");
// Establecer tamaño y fuente
contexto.font = "30px Verdana";
// Sintaxis: text, x, y
contexto.strokeText("strokeText", 0, 50);
contexto.fillText("fillText", 0, 100);
// Se puede cambiar durante la ejecución
contexto.strokeStyle = "red";
contexto.strokeText("strokeText rojo", 170, 50);
contexto.font = "20px Courier New";
contexto.fillStyle = "yellow";
contexto.fillText("fillText amarillo", 120, 100);
El resultado es el siguiente:
