Canvas之画单一色圆环

本文介绍如何使用HTML5 Canvas绘制一个可动画的圆环,并附带完整代码示例。圆环由内外两层构成,外层颜色变化显示进度效果,内层为固定颜色。同时展示了文字绘制及动画循环的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,说明

用HTML画出可动画的圆环.效果图如下:

二,代码片段(完整的代码demo在文章最后)

<canvas id="canvas" width="600" height="600" style="background: "#ffffff";" ></canvas>
<script>
			
			
        window.onload = function(){
            var canvas = document.getElementById('canvas'),  //获取canvas元素
                context = canvas.getContext('2d'),  //获取画图环境,指明为2d
                
                centerX = canvas.width/2,   //Canvas中心点x轴坐标
                centerY = canvas.height/2,  //Canvas中心点y轴坐标
                rad = Math.PI*2/100, //将360度分成100份,那么每一份就是rad度
                speed = 10; //加载的快慢就靠它了 
                
                canvas.onclick=function (){
                window.open('flightHour.html');
                }
                
                
            //绘制外圈
            function blueCircle(n){
                context.save();
                context.strokeStyle = "#A757A8"; //设置描边样式
                context.lineCap="round";
                context.radius=30;
                context.lineWidth = 30; //设置线宽
                context.beginPath(); //路径开始
                context.arc(centerX, centerY, 200 , -Math.PI/2, -Math.PI/2 +n*rad,false); //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)
                context.stroke(); //绘制
                context.closePath(); //路径结束
                context.restore();
            }
            //绘制内圈
            function whiteCircle(){
                context.save();
                context.beginPath();
                context.radius=20;
                context.lineWidth = 20;
                context.strokeStyle = "gray";
                context.arc(centerX, centerY, 200 , 0, Math.PI*2, false);
                context.stroke();
                context.closePath();
                context.restore();
            }  
            //文字绘制
            function text(n){
                context.save(); //save和restore可以保证样式属性只运用于该段canvas元素
                context.strokeStyle = "#808080"; //设置描边样式
                context.fillStyle="#808080";
				
              context.font = "60px sans-serif"; //设置字体大小和字体
                
                //绘制字体,并且指定位置
                context.fillText("966", centerX-45, centerY-20);
                context.font = "40px sans-serif";
                context.fillText("总数", centerX-45, centerY+40);
                context.stroke(); //执行绘制
                context.restore();
            } 
            
            //动画循环
            (function drawFrame(){
                window.requestAnimationFrame(drawFrame, canvas);
                context.clearRect(0, 0, canvas.width, canvas.height);
                whiteCircle();
                text(speed);
                
                blueCircle(speed);
                if(speed>0&&speed<88) {
                	speed += 1;
                }else{
                	speed=88;
                }
                
            }());
        }
    </script>

三,demo地址(该demo还包含多色圆环,柱状图,折线图等等)

GitHub地址: https://github.com/LuochuanAD/CanvasForHtml5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值