Crear un polígono en Canvas HTML5

25/Feb/2021 HTML5 , , Deja un comentario

Seguimos avanzando con los ejemplos de gráficos con canvas y hoy vamos a ver cómo crear un polígono en canvas HTML5. Y es que aunque no existe un método que nos dibuje un polígono si que podemos crearlo mediante un path, moviendo las líneas yendo a las coordenadas de sus vértices.

Crear el Canvas

Así que manos a la obra. Lo primero será crear el elemento canvas dentro de nuestra página web.

<h1>Crear polígonos</h1>
<canvas height="600px" width="1000px" id="micanvas">
    Su navegador no soporta en elemento CANVAS
</canvas>

Y obtener su contexto mediante Javascript y los métodos .getDocumentbyId() y ..getContext().

var canvas = document.getElementById("micanvas");
var ctx = canvas.getContext("2d");

Coordenadas de los vértices del polígono

Ahora lo que tenemos que ver es cómo representar las coordenadas del polígono. Para ello vamos a utilizar una matriz donde la primera posición serán las coordenadas x y el segundo elemento serán las coordenadas y.

De esta forma la siguiente matriz:

var poligono = [[3,3,9],[3,9,3]];

Irá a las coordenadas (3,3) (3,9) y (9,3). Hay que tener en cuenta que el último punto del polígono se unirá con el inicial para poder cerrar el polígono.

Crear un polígono en Canvas

Una vez que tenemos las coordenadas pasamos a crear el path en el cual irmos yendo de coordenada en coordenada. Pero lo primero será crear el path mediante .beginPath() y nos moveremos a la primera coordenada mediante .moveTo().

ctx.beginPath();
ctx.moveTo(coords[0][0], coords[1][0]);

Ahora iremos yendo a cada una de las coordenadas trazando una línea con el método .lineTo(). Para ello recorremos la matriz

for (x=1;x<coords[0].length;x++)
    ctx.lineTo(coords[0][x], coords[1][x]);                

Una vez terminado cerramos el path mediante el método .closePath() y forzamos el pintado de la línea mediante el método stroke().

ctx.closePath();
ctx.lineWidth = 1;
ctx.strokeStyle = "#FFCC00";  
ctx.stroke();

Vemos que las propiedades .lineWidth y .strokeStyle nos sirven para dar estilo a la línea del polígono.

Si lo que queremos es rellenar el color del polígono tendremos que configurarlo mediante la propiedad .fillStyle e invocar al método .fill(). De esta manera el código que nos dibuja el polígono nos quedaría de la siguiente forma.

ctx.beginPath();
ctx.moveTo(coords[0][0], coords[1][0]);

for (x=1;x<coords[0].length;x++)
    ctx.lineTo(coords[0][x], coords[1][x]);                

ctx.closePath();
ctx.lineWidth = 1;
ctx.strokeStyle = "#FFCC00";  
ctx.stroke();            
ctx.fillStyle = "#FFCC00";        
ctx.fill();

De esta manera ya habríamos conseguido crear un polígono en Canvas HTML5.

Vídeos sobre HTML5


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.