基本上我希望能够使用画布填充圆圈,但它会以一定的百分比动画.
我只有圆圈填满了80%.
我只有圆圈填满了80%.
我的画布知识并不令人惊讶,这是我在photoshop中制作的图像,用于显示我想要的内容.
我希望圆圈开始为空,然后填充说圆圈的70%.
Canvas有可能,如果是这样吗?任何人都可以了解如何做到这一点?
这是我管理的一个小提琴
var canvas = document.getElementById('Circle'); var context = canvas.getContext('2d'); var centerX = canvas.width / 2; var centerY = canvas.height / 2; var radius = 80; context.beginPath(); context.arc(centerX,centerY,radius,2 * Math.PI,false); context.fillStyle = '#13a8a4'; context.fill(); context.lineWidth = 10; context.strokeStyle = '#ffffff'; context.stroke();
任何帮助都将受到大力赞赏
解决方法
剪裁区域使这非常容易.你所要做的就是制作一个圆形剪裁区域,然后填充一个大小的矩形,以获得一个值得填充的“部分圆”.这是一个例子:
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,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,false); context.lineWidth = 10; context.strokeStyle = '#000000'; context.stroke(); // Every time,raise amount by some value: amount += amountToIncrease; if (amount > full) amount = 0; // restart } draw(); // Every second we'll fill more; setInterval(draw,1000);