---
title: CanvasRenderingContext2D.arc()
slug: Web/API/CanvasRenderingContext2D/arc
translation_of: Web/API/CanvasRenderingContext2D/arc
---
<div>{{APIRef}}</div>

<p><span class="notranslate">El método <code><strong>CanvasRenderingContext2D</strong></code> <strong><code>.arc()</code></strong> de la API de Canvas 2D añade un arco a la trayectoria centrada en la posición <em>(x, y)</em> con el radio <em>r</em> comenzando en <em>startAngle</em> y terminando en <em>endAngle que</em> va en la dirección dada en sentido <em>antihorario</em> (predeterminado en sentido  horario) .</span></p>

<h2 id="Sintaxis"><span class="highlight-span"><span class="notranslate">Sintaxis</span></span></h2>

<pre class="syntaxbox"><span class="notranslate"><var>Void <em>ctx</em> .arc (x, y, radio, startAngle, endAngle, antihorario);</var></span></pre>

<h3 id="Parámetros"><span class="notranslate">Parámetros</span></h3>

<dl>
 <dt><code>x</code></dt>
 <dd><span class="notranslate">La coordenada x del centro del arco.</span></dd>
 <dt><code>y</code></dt>
 <dd><span class="notranslate">La coordenada y del centro del arco.</span></dd>
 <dt><code>radius</code></dt>
 <dd><span class="notranslate">El radio del arco.</span></dd>
 <dt><code>startAngle</code></dt>
 <dd><span class="notranslate">El ángulo en el que se inicia el arco, medido en sentido horario desde el eje x positivo y expresado en radianes.</span></dd>
 <dt><code>endAngle</code></dt>
 <dd><span class="notranslate">El ángulo en el que termina el arco, medido en sentido horario desde el eje x positivo y expresado en radianes.</span></dd>
 <dt><span class="notranslate"><code>anticlockwise</code> <span class="inlineIndicator optional optionalInline">Opcional</span></span></dt>
 <dd><span class="notranslate">Un <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=es&amp;rurl=translate.google.com&amp;sl=auto&amp;sp=nmt4&amp;tl=es&amp;u=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean&amp;usg=ALkJrhiYmhdjPGE_uAW2GdnX2VQcrdMSOA" title="El objeto booleano es un contenedor de objetos para un valor booleano."><code>Boolean</code></a> opcional que, si es <code>true</code> , hace que el arco se dibuje en sentido contrario a las agujas del reloj entre los dos ángulos.</span> <span class="notranslate"> De forma predeterminada, se dibuja en el sentido de las agujas del reloj.</span></dd>
</dl>

<h2 id="Ejemplos"><span class="highlight-span"><span class="notranslate">Ejemplos</span></span></h2>

<h3 id="Using_the_arc_method" name="Using_the_arc_method"><span class="notranslate">Utilizando el método del <code>arc</code></span></h3>

<p><span class="notranslate">Esto es sólo un simple fragmento de código dibujando un círculo.</span></p>

<h4 id="HTML">HTML</h4>

<pre class="brush: html">&lt;canvas id="canvas"&gt;&lt;/canvas&gt;
</pre>

<h4 id="JavaScript">JavaScript</h4>

<pre class="brush: js">var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

ctx.beginPath();
ctx.arc(75, 75, 50, 0, 2 * Math.PI);
ctx.stroke();
</pre>

<p><span class="notranslate">Edite el código de abajo y vea su actualización de cambios en vivo en el lienzo:</span></p>

<div class="hidden">
<h6 id="Playable_code" name="Playable_code">Playable code</h6>

<pre class="brush: html">&lt;canvas id="canvas" width="400" height="200" class="playable-canvas"&gt;&lt;/canvas&gt;
&lt;div class="playable-buttons"&gt;
  &lt;input id="edit" type="button" value="Edit" /&gt;
  &lt;input id="reset" type="button" value="Reset" /&gt;
&lt;/div&gt;
&lt;textarea id="code" class="playable-code"&gt;
ctx.beginPath();
ctx.arc(50, 50, 50, 0, 2 * Math.PI, false);
ctx.stroke();&lt;/textarea&gt;
</pre>

<pre class="brush: js">var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var edit = document.getElementById("edit");
var code = textarea.value;

function drawCanvas() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  eval(textarea.value);
}

reset.addEventListener("click", function() {
  textarea.value = code;
  drawCanvas();
});

edit.addEventListener("click", function() {
  textarea.focus();
})

textarea.addEventListener("input", drawCanvas);
window.addEventListener("load", drawCanvas);
</pre>
</div>

<p>{{ EmbedLiveSample('Playable_code', 700, 360) }}</p>

<h3 id="Different_shapes_demonstrated" name="Different_shapes_demonstrated"><span class="notranslate">Diferentes formas demostradas</span></h3>

<p><span class="notranslate">En este ejemplo se dibujan diferentes formas para mostrar lo que es posible al usar <code>arc()</code> .</span></p>

<div class="hidden">
<h6 id="HTML_2">HTML</h6>

<pre class="brush: html">&lt;canvas id="canvas" width="150" height="200"&gt;&lt;/canvas&gt;
</pre>

<h6 id="JavaScript_2">JavaScript</h6>
</div>

<pre class="brush: js">var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

// Draw shapes
for (var i = 0; i &lt; 4; i++) {
  for(var j = 0; j &lt; 3; j++) {
    ctx.beginPath();
    var x              = 25 + j * 50;               // x coordinate
    var y              = 25 + i * 50;               // y coordinate
    var radius         = 20;                    // Arc radius
    var startAngle     = 0;                     // Starting point on circle
    var endAngle       = Math.PI + (Math.PI * j) /2; // End point on circle
    var anticlockwise  = i % 2 == 1;                // Draw anticlockwise

    ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);

    if (i &gt; 1) {
      ctx.fill();
    } else {
      ctx.stroke();
    }
  }
}</pre>

<p>{{ EmbedLiveSample('Different_shapes_demonstrated', 160, 210, "https://mdn.mozillademos.org/files/204/Canvas_arc.png") }}</p>

<h2 id="Specifications">Specifications</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col"><span class="notranslate">Especificación</span></th>
   <th scope="col"><span class="notranslate">Estado</span></th>
   <th scope="col"><span class="notranslate">Comentario</span></th>
   <td><span class="notranslate"><a class="external external-icon" href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=es&amp;rurl=translate.google.com&amp;sl=auto&amp;sp=nmt4&amp;tl=es&amp;u=https://html.spec.whatwg.org/multipage/scripting.html&amp;usg=ALkJrhjTH2Ij7ayPxhvtaZrELWW-GupMRw#dom-context-2d-arc" hreflang="en" lang="en">WHATWG HTML Estándar de vida</a></span><br>
    <span class="notranslate"><a class="external external-icon" href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=es&amp;rurl=translate.google.com&amp;sl=auto&amp;sp=nmt4&amp;tl=es&amp;u=https://html.spec.whatwg.org/multipage/scripting.html&amp;usg=ALkJrhjTH2Ij7ayPxhvtaZrELWW-GupMRw#dom-context-2d-arc" hreflang="en" lang="en"><small lang="en-US">La definición de 'CanvasRenderingContext2D.arc' en esa especificación.</small></a></span></td>
   <td><span class="notranslate"><span class="spec-Living">Estándar de vida</span></span></td>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName('HTML WHATWG', "scripting.html#dom-context-2d-arc", "CanvasRenderingContext2D.arc")}}</td>
   <td>{{Spec2('HTML WHATWG')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilidad_del_navegador"><span class="highlight-span"><span class="notranslate">Compatibilidad del navegador</span></span></h2>

{{Compat("api.CanvasRenderingContext2D.arc")}}

<h2 class="highlight-spanned" id="Notas_específicas_de_Gecko"><span class="highlight-span"><span class="notranslate">Notas específicas de Gecko</span> </span></h2>

<p><span class="notranslate">Comenzando con Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1):</span></p>

<ul>
 <li><span class="notranslate">El parámetro <code>anticlockwise</code> es opcional,</span></li>
 <li><span class="notranslate">Especificar un radio negativo ahora arroja un error <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=es&amp;rurl=translate.google.com&amp;sl=auto&amp;sp=nmt4&amp;tl=es&amp;u=https://developer.mozilla.org/en-US/docs/Web/API/DOMError&amp;usg=ALkJrhjJXFH50zmUpD4NUbH_0bFfrCdTxg" title="La interfaz DOMError describe un objeto de error que contiene un nombre de error."><code>IndexSizeError</code></a> ("Índice o tamaño es negativo o mayor que la cantidad permitida").</span></li>
</ul>

<h2 class="highlight-spanned" id="Ver_también"><span class="highlight-span"><span class="notranslate">Ver también</span> </span></h2>

<ul>
 <li><span class="notranslate">La interfaz que lo define, <a href="https://translate.googleusercontent.com/translate_c?depth=1&amp;hl=es&amp;rurl=translate.google.com&amp;sl=auto&amp;sp=nmt4&amp;tl=es&amp;u=https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D&amp;usg=ALkJrhi38xECKVHgn-8Z40wUeE-veK4pog" title='Para obtener un objeto de esta interfaz, llame a getContext () en un elemento &amp;lt;canvas>, proporcionando "2d" como argumento:'><code>CanvasRenderingContext2D</code></a></span></li>
</ul>