Canvas画圆环or进度条

2016-12-03  本文已影响0人  brickspert

本项目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();
}

```
上一篇 下一篇

猜你喜欢

热点阅读