El
canvas
es un nuevo elemento de HTML5 que
proporciona un lienzo con el que poder dibujar mediante código JavaScript.
Puedes consultar la documentación oficial del
W3C sobre
el elemento y
cómo dibujar en él, y también
estudiar la sucesión de ejemplos que el profesor Víctor Jiménez está publicando
en su web. Para facilitar
la comprensión del material anterior, he aquí un brevísimo resumen de características:
- Las dimensiones del lienzo pueden fijarse desde los
atributos
width
y height
del propio
elemento, pero dibujar en él es algo que se consigue mediante
métodos aplicados a un objeto que no es el mismo lienzo,
sino un contexto bidimensional extraído de él:
miContexto=miLienzo.getContext("2d");
Generalmente, dibujar una figura supone dos pasos:
- Especificar un camino. Por ejemplo:
miContexto.beginPath();
miContexto.moveTo(100, 50);
miContexto.lineTo(100, 150);
miContexto.lineTo(400, 150);
- Ordenar que se dibuje su contorno, su relleno o ambos. Por ejemplo:
miContexto.stroke();
miContexto.fill();
Hay excepciones, como los métodos strokeRect()
y fillRect()
, con cada uno de los cuales se
especifica simultáneamente un camino (rectangular) y qué se
quiere dibujar de él (contorno o relleno).
En cualquier caso, las características de contornos y
rellenos tales como anchuras de línea, colores o patrones, hay
que especificarlas antes de ordenar su dibujo, por ejemplo:
miContexto.strokeStyle="red";
miContexto.lineWidth=10;
miContexto.strokeRect(100, 200, 50, 50);
miContexto.fillStyle="blue";
miContexto.fillRect(100, 300, 50, 100);
Esas características serán aplicables al dibujo de sucesivas
figuras a menos que se cambien.
El lienzo es, simplemente, un mapa de píxeles. Así
pues, una vez se ha dibujado una figura, ésta pierde entidad
como tal y no hay forma, por ejemplo, de mover a una nueva posición
un triángulo previamente dibujado (para simularlo, habría que redibujar
el lienzo sin el triángulo original y dibujar un nuevo triángulo en
la nueva posición). Y tampoco se puede, por ejemplo, asociar un evento
clic a una figura.
Eso sí, dentro de lo que supone limitarse a mapas de
píxeles, el contexto 2D del elemento canvas
ofrece
múltiples posibilidades, como por ejemplo:
- Gran número de caminos y figuras, como rectángulos, líneas
rectas, círculos, arcos, texto, curvas de Bézier...
- Definición por el usuario de patrones y diferentes tipos
de degradados que luego pueden utilizarse como estilo de
relleno.
- Posibilidad de incorporar y tratar ficheros de imagen.
- Efectos tales como sombras o transparencias.
- Efectos atractivos combinando sus facilidades de
dibujo con otros elementos del entorno de programación como
estructuras de control o temporizadores.