zoukankan      html  css  js  c++  java
  • canvas绘制虚线图表

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

    要实现的效果如下:
    image.png

    其实难度不大,但是考虑一些人员对于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>
    

    绘制效果如下图所示:
    result

    ps: 后面那个读者也给我看了下css的实现, css实现这种东西还是太麻烦,一般不建议。
    css

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

  • 相关阅读:
    [HAOI2015]按位或——Min-Max容斥+FWT
    HDU 4773 Problem of Apollonius——圆反演
    类欧几里得小结
    线性规划(单纯形法)知识整理
    奇怪的数学题(51nod1847)——min_25筛+杜教筛+第二类斯特林数
    CSP-S 2019 游记
    2019.11.11~2019.11.12考试总结
    2019.11.6~2019.11.7考试总结
    1019.11.1~2019.11.2考试总结
    Final-阶段站立会议4
  • 原文地址:https://www.cnblogs.com/flyfox1982/p/14745118.html
Copyright © 2011-2022 走看看