使用canvas画同心圆,并且设置颜色渐变

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37817251/article/details/82494341

使用canvas进行画圆,并且设置圆环颜色渐变;中间的实心圆渐变。在使用的过程中,其实是发现createLinearGradient(x0,y0,x1,y1)方法时,根据改变x0,y0,x1,y1可以改变圆环颜色饱和度,所以写下这篇文章进行记录。下面是实现的结果图:

下面是具体的代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>使用canvas画同心渐变圆</title>
    </head>
    <body>
        <canvas id="canvasEle"></canvas>
    </body>
    <script>
        // 圆环开始的位置的颜色
        var ringSartColor;
        // 圆环结束的位置的颜色
        var ringEndColor;
        // canvas标签的id
        var canvasId;
        function initCanvas(canvasId,ringSartColor,ringEndColor){
            var myCanvas = document.getElementById(canvasId);
            var context = myCanvas.getContext("2d");
            // 通过修改中间的值可以改变圆中颜色的饱和度:圆环
            // createLinearGradient(x0,y0,x1,y1);
            // 参数分别是渐变开始的x0、y0坐标;渐变结束点的x1、y1坐标
            // var ring = context.createLinearGradient(0,90,90,0);
            var ring = context.createLinearGradient(0,60,60,0);
            ring.addColorStop("0",ringSartColor);
            ring.addColorStop("1.0",ringEndColor);
            // 用渐变进行填充颜色
            context.strokeStyle = ring;
            // 设置圆环的宽度
            context.lineWidth = 10;
            // 绘画圆环
            context.beginPath();
            // 使用arc设置context.arc(x,y,r,sAngle,eAngle,counterclockwise);
            // x:圆的中心的x坐标;y:圆的中心的y坐标;r:圆的半径;
            // sAngle:起始角,以弧度计(弧的圆形的三点钟位置是 0 度);
            // eAngle:结束角,以弧度计;
            // counterclockwise:可选。规定应该逆时针还是顺时针绘图。False = 顺时针,true = 逆时针。
            context.arc(74,74,60,0,Math.PI*2,false);
            // 设置圆环
            context.stroke();
            // 结束 画圆环
            context.closePath();
            
            // 中间的 圆 createRadialGradient(x0,y0,r0,x1,y1,r1);
            // 渐变的开始圆的x0、y0、r0坐标半径;渐变的结束圆的x1、y1、z1坐标半径
            var round = context.createRadialGradient(74,74,5,74,74,40);
            round.addColorStop(0,"#FFF");
            round.addColorStop(1,"#4C4C4C");
            context.fillStyle = round;
            context.beginPath();
            // 上面已经描述清楚
            context.arc(74,74,48,0,2*Math.PI,true);
            // 实心圆
            context.fill();
        };
        // 画圆环  #1377ff   #b042fe    #C80000   #08e5ab  #00a1f0   这些颜色可以自己尝试
        initCanvas("canvasEle","#2C2255","#08e5ab");        
    </script>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_37817251/article/details/82494341