Canvas实现圆形进度条并显示数字百分比


本文摘自PHP中文网,作者迷茫,侵删。

实现效果

1.首先创建html代码

1

<canvas id="canvas" width="500" height="500" style="background:#000;"></canvas>

2.创建canvas环境

1

2

3

4

5

6

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 = 0.1; //加载的快慢就靠它了

3.绘制5像素宽的运动外圈

1

2

3

4

5

6

7

8

9

10

//绘制5像素宽的运动外圈

        function blueCircle(n){

            context.save();

            context.strokeStyle = "#fff"; //设置描边样式

            context.lineWidth = 5; //设置线宽

            context.beginPath(); //路径开始

            context.arc(centerX, centerY, 100 , -Math.PI/2, -Math.PI/2 +n*rad, false); //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)

            context.stroke(); //绘制

            context.closePath(); //路径结束            context.restore();

        }

4.绘制白色外圈

1

2

3

4

5

6

7

8

9

10

11

//绘制白色外圈

        function whiteCircle(){

            context.save();

            context.beginPath();

            context.lineWidth = 2; //设置线宽

            context.strokeStyle = "red";

            context.arc(centerX, centerY, 100 , 0, Math.PI*2, false);

            context.stroke();

            context.closePath();

            context.restore();

        }

5.百分比文字绘制

1

2

3

4

5

6

7

8

function text(n){

            context.save(); //save和restore可以保证样式属性只运用于该段canvas元素

            context.strokeStyle = "#fff"; //设置描边样式

            context.font = "40px Arial"; //设置字体大小和字体

            //绘制字体,并且指定位置

            context.strokeText(n.toFixed(0)+"%", centerX-25, centerY+10);

            context.stroke(); //执行绘制            context.restore();

        }

6.让它运动起来

1

2

3

4

5

6

7

8

//动画循环

        (function drawFrame(){            window.requestAnimationFrame(drawFrame);

            context.clearRect(0, 0, canvas.width, canvas.height);

            whiteCircle();

            text(speed);

            blueCircle(speed);            if(speed > 100) speed = 0;

            speed += 0.1;

        }());

完整代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>HTML5 Canvas 圆形进度条并显示数字百分比</title>

 

<style>

*{margin:0;padding:0;}

body{text-align:center;background-color:#000;}

</style>

 

</head>

<body>

 

<canvas id="canvas" width="500" height="500" style="background:#000;"></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 = 0.1; //加载的快慢就靠它了

             

        //绘制5像素宽的运动外圈

        function blueCircle(n){

            context.save();

            context.strokeStyle = "#fff"; //设置描边样式

            context.lineWidth = 5; //设置线宽

            context.beginPath(); //路径开始

            context.arc(centerX, centerY, 100 , -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.lineWidth = 2; //设置线宽

            context.strokeStyle = "red";

            context.arc(centerX, centerY, 100 , 0, Math.PI*2, false);

            context.stroke();

            context.closePath();

            context.restore();

        

        //百分比文字绘制

        function text(n){

            context.save(); //save和restore可以保证样式属性只运用于该段canvas元素

            context.strokeStyle = "#fff"; //设置描边样式

            context.font = "40px Arial"; //设置字体大小和字体

            //绘制字体,并且指定位置

            context.strokeText(n.toFixed(0)+"%", centerX-25, centerY+10);

            context.stroke(); //执行绘制

            context.restore();

        }

        //动画循环

        (function drawFrame(){

            window.requestAnimationFrame(drawFrame);

            context.clearRect(0, 0, canvas.width, canvas.height);

            whiteCircle();

            text(speed);

            blueCircle(speed);

            if(speed > 100) speed = 0;

            speed += 0.1;

        }());

    }

</script>

 

</body>

</html>

以上就是Canvas实现圆形进度条并显示数字百分比的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

javascript如何将字符串转为数字

详解html5 canvas drawing的示例代码(三)

如何用jquery判断是否为数字

字符串转数字有什么方法

canvas实现圆形进度条并显示数字百分比

关于html5 canvas的事件处理

h5 canvas实现粒子时钟的详细方法

canvas上实现元素图片镜像翻转动画效果的方法

html5如何使用canvas画空心圆与实心圆

canvas 动态图表

更多相关阅读请进入《canvas》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...