Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Clipping regions make this very easy. All you have to do is make a circular clipping region and then fill a rectangle of some size to get a "partial circle" worth of fill. Here's an example:</p> <pre><code>var canvas = document.getElementById('Circle'); var context = canvas.getContext('2d'); var centerX = canvas.width / 2; var centerY = canvas.height / 2; var radius = 80; var full = radius*2; var amount = 0; var amountToIncrease = 10; function draw() { context.save(); context.beginPath(); context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); context.clip(); // Make a clipping region out of this path // instead of filling the arc, we fill a variable-sized rectangle // that is clipped to the arc context.fillStyle = '#13a8a4'; // We want the rectangle to get progressively taller starting from the bottom // There are two ways to do this: // 1. Change the Y value and height every time // 2. Using a negative height // I'm lazy, so we're going with 2 context.fillRect(centerX - radius, centerY + radius, radius * 2, -amount); context.restore(); // reset clipping region context.beginPath(); context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); context.lineWidth = 10; context.strokeStyle = '#000000'; context.stroke(); // Every time, raise amount by some value: amount += amountToIncrease; if (amount &gt; full) amount = 0; // restart } draw(); // Every second we'll fill more; setInterval(draw, 1000); </code></pre> <p><a href="http://jsfiddle.net/simonsarris/pby9r/">http://jsfiddle.net/simonsarris/pby9r/</a></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload