canvas绘制弧线

1 绘制圆形(arc)

ctx.arc(x,y,r,sAngle,eAngle,counterclockwise);
x,y圆心坐标,r半径;
sAngle,eAngle:起始,结束角度。
counterclockwise:是否是逆时针。true为逆时针,false为顺时针(默认)
  • 弧度和角度的转换公式: rad = deg*Math.PI/180

  • 圆形上面的点的坐标的计算公式

  • x =x0 + Math.cos(rad) * R;//x0和y0是圆心点坐标

  • y =y0 + Math.sin(rad) * R;//注意都是弧度

    <script>
        var canvas = document.getElementById('canvas');
        var ctx = canvas.getContext('2d');
    
        //弧形:圆心,半径,角度
        var x0 = 200;
        var y0 = 200;
        var radius = 100;
        var Angle = 72;
        ctx.lineWidth = 2;
        ctx.strokeStyle = "red";
        //角度都要转成弧度
        ctx.arc(x0,y0,radius,0,Angle*Math.PI/180,false);        //counterclockwise:false 表示顺时针(默认)
        ctx.stroke();
        ctx.fillStyle = 'pink';
        ctx.fill();
    
        ctx.beginPath();
        ctx.strokeStyle = "blue";
        ctx.lineWidth = 6;
        ctx.arc(x0,y0,radius,Angle*Math.PI/180, 270*Math.PI/180,false);
        ctx.stroke();
        //ctx.fillStyle = 'orange';
        ctx.fill();
    </script>
    

2 非零正交原则

ctx.fill();

注意:交叉路径的填充问题,“非零环绕原则”,顺逆时针穿插次数决定是否填充。

1.如果线段是与路径的顺时针部分相交,则计数器加1,
2.如果线段是与路径的逆时针部分相交,则计数器减1,
3.若计数器最终结果不是0,在调用fill()方法时,浏览器就会对其进行填充;若为0,就不对其填充。

<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext('2d');

ctx.arc(250,250,200,0,2*Math.PI,true);
ctx.arc(250,250,100,0,2*Math.PI,false);
ctx.fillStyle = "pink";
ctx.fill();
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 4,789评论 2 32
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    Looog阅读 3,981评论 3 40
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    J_L_L阅读 1,577评论 0 4
  • 上一节,我们学习了如何使用绘制线条及多边形的方式来绘制七巧板,这一节,我们学习如何绘制弧线和圆。同样,html文件...
    天上月丶阅读 1,845评论 0 1
  • Cnavas绘制时钟 背景图的绘制(大圆、数字、小圆点),掌握基础知识:圆的绘制(arc方法),关于圆的弧度的计算...
    Iris_mao阅读 2,526评论 7 26