美文网首页
canvas绘制270度圆环效果

canvas绘制270度圆环效果

作者: 蜗牛Coming | 来源:发表于2018-02-27 16:09 被阅读0次

1.首先,在html中,写入canvas标签

 <canvas id="canvas" width="500" height="500" style="background-color:pink;"></canvas>

2.然后在js中,写入以下代码:

    var rad = Math.PI * 1.5 / 100; //把270度圆分为100份
    var num = 0;
    var canvas = document.getElementById("canvas");
    var cxt = canvas.getContext('2d');
    //绘制背景
    function drawBg() {
        cxt.beginPath(); //起始一条路径
        cxt.arc(250, 250, 150, -5 * Math.PI / 4, -7 * Math.PI / 4, false);
        //cxt.arc(x,y,r,sAngle,eAngle,counterclockwise)创建圆形
        //x 圆的中心的X坐标
        //y 圆的中心的Y坐标
        //r 圆的半径
        //sAngle 起始角,以弧度计。弧的原型的三点钟位置是0度,十二点钟位置是-Math.PI/2
        //eAngle 结束角,以弧度计
        //counterclockwise 可选,False是顺时针,true是逆时针。顺逆时针都是以三点钟方向开始
        cxt.lineWidth = 30; //圆线宽
        cxt.strokeStyle = "#ccc"; //笔触的样式
        cxt.lineCap = "round"; //线条的结束端点样式
        cxt.stroke();  //绘制已定义的路径
        cxt.closePath();  //创建从当前点回到起始点的路径
    }
    // 绘制前景
    function drawForeRing(num) {
        cxt.beginPath();
        cxt.arc(250, 250, 150, -5 * Math.PI / 4, -5 * Math.PI / 4 + rad * num, false);
        cxt.lineWidth = 30;
        var grd = cxt.createLinearGradient(0, 0, 500, 0); //设置线性渐变色
        //context.createLinearGradient(x0,y0,x1,y1);
        //x0  渐变开始点的 x 坐标
        //y0  渐变开始点的 y 坐标
        //x1  渐变结束点的 x 坐标
        //y1  渐变结束点的 y 坐标
        grd.addColorStop(0, 'green');
        grd.addColorStop("0.25", 'green');
        grd.addColorStop('0.5', 'yellow');
        grd.addColorStop('0.6', 'yellow');
        grd.addColorStop('0.75', 'red');
        grd.addColorStop('1', 'red');
        cxt.strokeStyle = grd;
        cxt.lineCap = "round";
        cxt.stroke();
        cxt.closePath();
    }
    drawBg();
    drawForeRing(50);
 //动画部分
    function drawFrame(){
       if(num <= 100){
         window.requestAnimationFrame(drawFrame);
        cxt.clearRect(0,0,500,500); //在给定的矩形内清除指定的像素,当前是清除画布
        drawBg();
        drawForeRing(num);
        num +=1;
      }
    };
window.requestAnimationFrame(drawFrame);

3.然后,就可以看到环形效果了

相关文章

网友评论

      本文标题:canvas绘制270度圆环效果

      本文链接:https://www.haomeiwen.com/subject/zekmxftx.html