用canvan实现绘制半圆环进度条

编程入门 行业动态 更新时间:2024-10-19 11:37:46

用canvan实现绘制<a href=https://www.elefans.com/category/jswz/34/1759498.html style=半圆环进度条"/>

用canvan实现绘制半圆环进度条

效果图

实现原理:

1.使用canvas绘制半圆弧,底图灰色半圆弧和颜色进度圆弧。

2.利用setInterval计时器,逐步改变颜色进度条,达到进度条的效果。

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /><title>半圆进度条</title><script type="text/javascript" src=".2.3/jquery.min.js"></script>
</head><body><canvas id="canvas" width="300" height="300"></canvas><script type="text/javascript">function toCanvas(id, progress, progress2) {//canvas进度条var canvas = document.getElementById(id),ctx = canvas.getContext("2d"),percent = progress,percent2 = progress2,//最终百分比circleX = canvas.width / 2, // 中心x坐标circleY = canvas.height / 2, //中心y坐标radius = 100, //圆环半径lineWidth = 15, // 圆形线条的宽度fontSize = 15; //字体大小//画圆function circle(cx, cy, r) {ctx.beginPath();ctx.lineWidth = lineWidth;ctx.strokeStyle = '#eee';ctx.arc(cx, cy, r, Math.PI, Math.PI * 2);//ctx.arc(cx, cy, r, Math.PI * 2 / 3, Math.PI * 1 / 3);ctx.stroke();}//画弧线function sector(cx, cy, r, startAngle, endAngle, anti) {ctx.beginPath();ctx.lineWidth = lineWidth;// 渐变色 - 可自定义var linGrad = ctx.createLinearGradient(circleX - radius - lineWidth, circleY, circleX + radius + lineWidth, circleY);linGrad.addColorStop(0.0, '#06a8f3');linGrad.addColorStop(1.0, '#00f8bb');ctx.strokeStyle = linGrad;//圆弧两端的样式ctx.lineCap = 'round';ctx.arc(cx, cy, r, Math.PI, Math.PI * (1 + endAngle / 100));ctx.stroke();}//刷新function loading() {var percent3 = progress;if (percent < percent2) percent = percent2;if (process >= percent) clearInterval(circleLoading);// if (process2 >= percent) clearInterval(circleLoading);//清除canvas内容ctx.clearRect(0, 0, circleX * 2, circleY * 2);//中间的字ctx.font = fontSize + 'px April';ctx.textAlign = 'center';ctx.textBaseline = 'middle';ctx.fillStyle = '#999';ctx.fillText(parseFloat(process).toFixed(0) + '%', circleX, circleY * 4 / 5);ctx.fillText("百分比", circleX, circleY); //圆形circle(circleX, circleY, radius);//圆弧sector(circleX, circleY, radius, Math.PI * 2 / 3, process);//控制结束时动画的速度if (process < percent3) {if (process / percent > 0.90) {process += 0.30;} else if (process / percent > 0.80) {process += 0.55;} else if (process / percent > 0.70) {process += 0.75;} else {process += 1.0;}}}var process = 0.0;var circleLoading = window.setInterval(function () {loading();}, 20);}toCanvas('canvas', 50, 80);</script>
</body></html>

更多推荐

用canvan实现绘制半圆环进度条

本文发布于:2024-03-13 12:23:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1733985.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:半圆   进度条   canvan

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!