乐趣区

关于前端:canvas绘制虚线图表

最近有读者加我微信征询这个问题,如下图所示:

要实现的成果如下:

其实难度不大,然而思考一些人员对于 canvas 不相熟,还是简略的介绍下。

其实该图表,就是一个圆圈里面在套一个圆弧的成果,次要的难点在于不晓得怎么绘制圆圈的虚线成果。其实 canvas 自身曾经反对了虚线的绘制,就是一个 api 调用的事件,api 是 setLineDash。

示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Line Dash</title>
    <style>
        canvas {border: 1px solid #000;}
    </style>
</head>
<body>
    <canvas id="canvas" width="600" height="400"></canvas>
    <script>
        var ctx = document.getElementById('canvas').getContext('2d');
        var w = canvas.width,
                h = canvas.height;

        var x = w / 2,
                y = h / 2;
        ctx.save();
        ctx.strokeStyle = "gray";
        ctx.setLineDash([5,5]);
        ctx.lineWidth = 10;
        ctx.beginPath();
        ctx.arc(200,200,75,0,Math.PI *2);
        ctx.stroke();
        ctx.restore();

        ctx.save();
        ctx.beginPath();
        ctx.lineWidth = 12;
        ctx.lineCap = "round";
        ctx.joinCap = "round";
        ctx.strokeStyle = "red";
        ctx.arc(200,200,75,0,-Math.PI/2,Math.PI /2);
        ctx.stroke();
        ctx.restore();
    </script>
</body>
</html>

绘制成果如下图所示:

ps:前面那个读者也给我看了下 css 的实现,css 实现这种货色还是太麻烦,个别不倡议。

关注公众号“ITMan 彪叔”能够及时收到更多有价值的文章。另外如果对可视化感兴趣,能够和我交换,微信 541002349.

退出移动版