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

要实现的成果如下:

其实难度不大,然而思考一些人员对于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.