Temario del Tutorial->10 - CANVAS (arcos rellenos y lineal)


Para dibujar arcos disponemos del método arc, que tiene los siguientes parámetros:

  arc(x,y,radio,angulo de comienzo, angulo final,sentido antihorario)

Los dos parámetros iniciales indican el punto central del arco, el tercero es el radio. Seguidamente indicamos el angulo de comienzo y el angulo final en radianes. Por último debemos pasar un "true" en caso que el arco se dibuje en sentido antihorario y "false" en caso contrario.

Con un ejemplo veremos como hacer para dibujar distintos tipos de arcos lineales y rellenos:

<!DOCTYPE HTML>
<html>
<head>
  <title>Título de la página</title>  
  <meta charset="UTF-8">

<script type="text/javascript">
function retornarLienzo(x) {
  var canvas = document.getElementById(x);
  if (canvas.getContext) {
    var lienzo = canvas.getContext("2d");   
    return lienzo;
  } else
    return false;
}

function dibujar() {
  var lienzo=retornarLienzo("lienzo1");
  if (lienzo) {
    lienzo.strokeStyle="rgb(255,0,0)";
    lienzo.beginPath();
    lienzo.arc(100,100,50,0,Math.PI,true);
    lienzo.stroke();
    
    lienzo.strokeStyle="rgb(0,255,0)";
    lienzo.beginPath();
    lienzo.arc(100,200,50,0,Math.PI,false);
    lienzo.stroke();
    
    lienzo.fillStyle="rgb(0,0,288)";
    lienzo.beginPath();    
    lienzo.arc(200,100,50,0,Math.PI,true);
    lienzo.fill();
    
    lienzo.fillStyle="rgb(255,255,0)";
    lienzo.beginPath();
    lienzo.arc(200,200,50,0,Math.PI*2,true);
    lienzo.fill();
    
  }
}

</script>

</head>
<body onLoad="dibujar()">
<canvas id="lienzo1" width="300" height="300">
Su navegador no permite utilizar canvas.
</canvas>
</body>
</html>

El resultado en el navegador al cargar esta página es:

canvas arco relleno y lineal

El primer arco se pinta solo el perímetro de color rojo y comienza en el ángulo cero y finaliza en los 180 grados (en radianes es PI), indicamos que avance en sentido antihorario:

    lienzo.strokeStyle="rgb(255,0,0)";
    lienzo.beginPath();
    lienzo.arc(100,100,50,0,Math.PI,true);
    lienzo.stroke();

Similar al arco anterior pero ahora indicamos que lo dibuje en sentido horario:

    
    lienzo.strokeStyle="rgb(0,255,0)";
    lienzo.beginPath();
    lienzo.arc(100,200,50,0,Math.PI,false);
    lienzo.stroke();

Dibujamos el arco pero luego indicamos que se rellene llamando al método fill en lugar de stroke:

    
    lienzo.fillStyle="rgb(0,0,288)";
    lienzo.beginPath();    
    lienzo.arc(200,100,50,0,Math.PI,true);
    lienzo.fill();

Dibujamos un círculo relleno de color amarillo:

    
    lienzo.fillStyle="rgb(255,255,0)";
    lienzo.beginPath();
    lienzo.arc(200,200,50,0,Math.PI*2,true);
    lienzo.fill();

Retornar