Canvas画圆环or进度条

本项目Github地址 https://github.com/brickspert/canvas-circle/

Canvas中文文档 https://developer.mozilla.org/zhCN/docs/Web/API/Canvas_API

  • 目标效果
目标效果
  • 代码
  1. HTML

    ```        
    


    <canvas id="circle" height="132px" width="132px">
    </canvas>

    
    
  2. JS

```
circle();
function circle() {
    var canvas = document.getElementById('circle');
    var ctx = canvas.getContext("2d");

    /*填充文字*/

    ctx.font = "18px Microsoft YaHei";
    /*文字颜色*/
    ctx.fillStyle = '#4b4d4e';
    /*文字内容*/
    var insertContent = '语言';
    var text = ctx.measureText(insertContent);
    /*插入文字,后面两个参数为文字的位置*/
    /*此处注意:text.width获得文字的宽度,然后就能计算出文字居中需要的x值*/
    ctx.fillText(insertContent, (132 - text.width) / 2, 58);

    /*填充百分比*/
    ctx.fillStyle = '#e24464';
    var ratioStr = '25%';
    var text = ctx.measureText(ratioStr);
    ctx.fillText(ratioStr, (132 - text.width) / 2, 85);

    /*开始圆环*/
    var circleObj = {
        ctx: ctx,
        /*圆心*/
        x: 66,
        y: 66,
        /*半径*/
        radius: 55,
        /*环的宽度*/
        lineWidth: 22
    }

    /*有色的圆环*/
    /*从-90度的地方开始画*/
    circleObj.startAngle = 0;
    /*从当前度数减去-90度*/
    circleObj.endAngle = Math.PI * 2 * 0.25;
    circleObj.color = '#e24464';
    drawCircle(circleObj);

    /*灰色的圆环*/
    /*开始的度数-从上一个结束的位置开始*/
    circleObj.startAngle = circleObj.endAngle;
    /*结束的度数*/
    circleObj.endAngle = Math.PI * 2;
    circleObj.color = '#e9e9e9';
    drawCircle(circleObj);

}
/*画曲线*/
function drawCircle(circleObj) {
    var ctx = circleObj.ctx;
    ctx.beginPath();
    ctx.arc(circleObj.x, circleObj.y, circleObj.radius, circleObj.startAngle, circleObj.endAngle, false);
    //设定曲线粗细度
    ctx.lineWidth = circleObj.lineWidth;
    //给曲线着色
    ctx.strokeStyle = circleObj.color;
    //连接处样式
    ctx.lineCap = 'round';
    //给环着色
    ctx.stroke();
    ctx.closePath();
}

```
  • 其他

    如果要实现这样的效果


    目标效果
    1. 先画灰色的圆环,再画有色的圆环;
    2. 从-90度开始开始画。
    3. 祝你好运。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 4,788评论 2 32
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    Looog阅读 3,980评论 3 40
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    J_L_L阅读 1,577评论 0 4
  • 《左传》曾说过:人非圣贤,孰能无过;过而能改,善莫大焉!我是个自认为很完美的人,在学校,我既是人人羡慕的大队...
    宝旺阅读 379评论 0 2
  • 第三十一章 第三十二章 虚假龙珠 ——01 利剑直接砍到了坚硬的黑羽翅膀铸成的保护上,当当几声脆响,来人力气大得可...
    腐草为滢阅读 431评论 0 2