使用canvas实现环形进度条

html代码:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6     </head>
 7     <body>
 8         <canvas id="pro" width="400" height="300"></canvas>
 9     </body>
10 </html>

js代码:

第一步:

var c=document.getElementById("pro"),
                    pro=0,
                    ctx=c.getContext("2d");
                    //画灰色的圆
                    ctx.beginPath();
                    ctx.arc(200,200,190,0,Math.PI*2);
                    ctx.closePath();
                    ctx.fillStyle=‘#e3eaf2‘;
                    ctx.fill();

效果图如下:

第二步:

function drawCricle(ctx,percent){
                        //画进度环
                        ctx.beginPath();
                        ctx.moveTo(200,200);
                        ctx.arc(200,200,190,Math.PI*0.8,Math.PI*(0.8+2*percent/200));
                        ctx.closePath();
                        ctx.fillStyle=‘#ff4b88‘;
                        ctx.fill();

                        //画内填充圆
                        ctx.beginPath();
                        ctx.arc(200,200,175,0,Math.PI*2);
                        ctx.closePath();
                        ctx.fillStyle=‘#fff‘;
                        ctx.fill();
                    }
drawCricle(ctx,60);//执行这个函数

效果图如下:

第三步:让它动起来

function animate(){
                        requestAnimationFrame(function(){
                            pro=pro+1;
                            drawCricle(ctx,pro);
                            if(pro<60){
                                animate();
                            }
                        });
                    }

如果需加入百分比文字:

//将这段代码加到drawCricle函数里面
ctx.font = "bold 20pt Microsoft YaHei";
                ctx.fillStyle = ‘#333‘;
                ctx.textAlign = ‘center‘;
                ctx.textBaseline = ‘middle‘;
                ctx.moveTo(200, 200);
                ctx.fillText(process + ‘%‘, 200, 200);

效果如下:

完整代码如下:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6     </head>
 7     <body>
 8         <canvas id="pro" width="400" height="400"></canvas>
 9         <script>
10             (function(){
11                 var c=document.getElementById("pro"),
12                     pro=0,
13                     ctx=c.getContext("2d");
14
15                     //画灰色的圆
16                     ctx.beginPath();
17                     ctx.arc(200,200,80,0,Math.PI*2);
18                     ctx.closePath();
19                     ctx.fillStyle=‘#f6f6f6‘;
20                     ctx.fill();
21
22                     function animate(){
23                         requestAnimationFrame(function(){
24                             pro=pro+1;
25                             drawCricle(ctx,pro);
26                             if(pro<60){
27                                 animate();
28                             }
29                         });
30                     }
31
32                     function drawCricle(ctx,percent){
33                         //画进度环
34                         ctx.beginPath();
35                         ctx.moveTo(200,200);
36                         ctx.arc(200,200,80,Math.PI*0.8,Math.PI*(0.8+2*percent/200));
37                         ctx.closePath();
38                         ctx.fillStyle=‘#ff9600‘;
39                         ctx.fill();
40
41                         //画内填充圆
42                         ctx.beginPath();
43                         ctx.arc(200,200,75,0,Math.PI*2);
44                         ctx.closePath();
45                         ctx.fillStyle=‘#fff‘;
46                         ctx.fill();
47
48                           //填充文字
49                         ctx.font = "bold 20pt Microsoft YaHei";
50                         ctx.fillStyle = ‘#333‘;
51                         ctx.textAlign = ‘center‘;
52                         ctx.textBaseline = ‘middle‘;
53                         ctx.moveTo(200, 200);
54                         ctx.fillText(pro + ‘%‘, 200, 200);
55                     }
56                     animate();
57             }())
58         </script>
59     </body>
60 </html>
时间: 2024-08-25 06:59:56

使用canvas实现环形进度条的相关文章

HTML5 Canvas绘制环形进度条

最近比较迷恋canvas,加之做了一个个人网站,有用到环形进度条,记录下来. canvas中没有直接绘制圆的方法,但有一个绘制弧线的context.arc方法, 下面讲下用该方法如何绘制出图片效果. arc()方法介绍 context.arc(x,y,r,sAngle,eAngle,counterclockwise); 参数说明: x: 圆的中心的 x 坐标 y: 圆的中心的 y 坐标 r: 圆的半径 sAngle: 起始角,以弧度计.(弧的圆形的三点钟位置是 0 度) eAngle: 结束角,

HTML5 canvas绘制倒计时+环形进度条

需求: 1.页面在进入时后台会提供一个固定时间和固定百分比,例如:18小时16分30秒,25%2.页面要求在进入时,有环形进度条从0推进到25%的效果,进度条旁的显示进度的黄色方块要始终保持跟随进度条最前方如图3.环形进度条中间计时器,要从获取到 具体时间后开始倒计时 设计图: JS代码如下: //补零function setDigit(num, n){ var str=''+num; if(str.length<n) { str='0'+str; } return str;}//设定时间fun

用初中数学知识撸一个canvas环形进度条

周末好,今天给大家带来一款接地气的环形进度条组件vue-awesome-progress.近日被设计小姐姐要求实现这么一个环形进度条效果,大体由四部分组成,分别是底色圆环,进度弧,环内文字,进度圆点.设计稿截图如下: 我的第一反应还是找现成的组件,市面上很多组件都实现了前3点,独独没找到能画进度圆点的组件,不然稍加定制也能复用.既然没有现成的组件,只有自己用vue + canvas撸一个了. 效果图 先放个效果图,然后再说下具体实现过程,各位看官且听我慢慢道来. 安装与使用 源码地址,欢迎sta

自定义环形进度条

自定义环形进度条 效果图: 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 package com.qiao.circleprogress_forexample; import android.app.Activity; impo

仿MIUI音量变化环形进度条实现

Android中使用环形进度条的业务场景其实蛮多的,比如下载文件的时候使用环形进度条,会给用户眼前一亮的感觉:再比如我大爱的MIUI系统,它的音量进度条就是使用环形进度条,尽显小米"为发烧而生"的宗旨.今天就为大家揭开那些高大上设计背后的故事,让我们也来实现如此酷炫的效果. 其实环形进度条只是一个稍稍复杂点的自定义控件,看过前段时间<Android自定义控件>系列的同学,理解起来会更加容易.还没看过的同学,出门右转,查看历史消息,再回头看今天的内容,会更加容易上手. 一.定

页面效果:圆形进度条 环形进度条

环形进度条(1.5秒之内倒计时) 效果做的比较粗糙,就是css的 clip属性,先切右边一半,再切左边一半.根据三角函数计算y高度 http://www.w3school.com.cn/cssref/pr_pos_clip.asp css的clip属性 <script src="http://cdn.bootcss.com/jquery/1.12.1/jquery.min.js"></script> <script type="text/java

利用jQuery和CSS实现环形进度条

html代码 1 <div class="circle" style="left:0"> 2 <div class="pie_left"><div class="left"></div></div> 3 <div class="pie_right"><div class="right"></div&

图解CSS3制作圆环形进度条的实例教程

圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能做一个圆形进度条效果出来时,如果是静态完整圆形进度条,那么就很简单了: .circleprogress{        width: 160px;        height: 160px;        border:20px solid red;        border-radius: 50

Swift - 环形进度条(UIActivityIndicatorView)的用法

Swift中,除了条形进度条外,还有环形进度条,效果图如下: 1,环形进度条的基本属性 (1)Style: Large White:比较大的白色环形进度条 White:白色环形进度条 Gray:灰色环形进度条 (2)Color: 设置环形进度条的颜色 (3)Behavior: Animating:勾选后环形进度条开始转动 Hides When Stopped:勾选后当环形进度条停止转动时自动隐藏 2,使用样例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1