美文网首页
使用canvas实现一个扇形图

使用canvas实现一个扇形图

作者: Amuer蘃 | 来源:发表于2019-11-09 10:13 被阅读0次
<script>
//创建一个画板
 let canvas = document.createElement('canvas');
    canvas.width = 500;
    canvas.height = 500;
    document.body.appendChild(canvas);
    let cxk = canvas.getContext('2d');
    let deg = Math.PI / 180//定义一个初始度数
    let data = [2, 7, 9, 6, 4, 3];
    let totle = data.reduce(function (pre, cur) {//数据求和
        return pre + cur;
    })
    let color = ['red', 'green', 'pink', 'yellow', 'blue', 'purple']
//封装一个函数
    draw()
    function draw(size) {
        let sdeg = 0;
        for (var i = 0; i < data.length; i++) {
            let cdeg = data[i] / totle * 360 * deg;
            cxk.save()
            cxk.beginPath();
            cxk.fillStyle = color[i];
            cxk.moveTo(250, 250);
            cxk.arc(250, 250, 100, sdeg, sdeg + cdeg);
            if (size && cxk.isPointInPath(size.x, size.y)) {
                cxk.fillStyle = 'black';
                cxk.moveTo(250, 250);
                cxk.arc(250, 250, 120, sdeg, sdeg + cdeg)
            }
            cxk.fill();
            cxk.restore();
            sdeg += cdeg
        }
    }
    canvas.addEventListener('mousemove', function (e) {
        let mx = event.offsetX;
        let my = event.offsetY;
        cxk.clearRect(0, 0, 500, 500);
        draw({
            x: event.offsetX,
            y: event.offsetY
        })
    })
</script>

相关文章

网友评论

      本文标题:使用canvas实现一个扇形图

      本文链接:https://www.haomeiwen.com/subject/newwbctx.html