【js学习笔记-113】------<canvas>绘制和填充曲线

<canvas>绘制和填充曲线

路径由子路径组成,子路径又由连接的点组成。那些点是通过直线来连接的,但点与点之间并不总是通过直线段连接的。CanvasRenderingContext2D对象定义了一些方法,这些方法用于在子路径中添加了新的点,并用曲线将当前点和新增的点连接起来。

arc()

此方法实现在当前子路径中添加一条弧。它首先将当前点和弧形的起点用一条直线连接,然后用圆的一部分来连接弧形的起点和终点,并把弧形终点作为新的当前点。要绘制一个弧形需要指定6个参数:圆心的x,y坐标、圆的半径、弧形的超始和结束的角度及弧形的方向(顺时针还是逆时针)

arcTo()

此方法绘制一条直线和一段圆弧(和arc()方法一样),但是,不同的是,绘制圆弧的时候指定的参数不同。指定半径为0时,绘制一条直线,如果非0然后将这条直线按照圆形形状变成曲线。

bezierCurveTo()

此方法实现在当前子路径中添加一个新的点,并利用三次贝赛尔曲线将它和当前点相连。曲线的形状由两个“控制点”c1c2确定。

quadraticCurveTo()

类似bezierCurveTo()它是二次贝塞尔曲线而不是三次

  //一个工具函数,用于将角度制转化成弧度制

    function radx(x){return Math.PI*x/180;}

 

    //绘制一个圆形,如果需要椭圆的话则进行相应的缩放和旋转即可

    //由于没有当前点,因此绘制的圆形不需要当前点到圆形起点之间的直线

        c.beginPath();

        c.arc(75,100,50,0,rads(360),false);

        c.moveTo(200,100);

        c.arc(200,100,50,rads(-60),rads(0));

        c.closePath();

 

        c.moveTo(325,100);

       c.arc(325,100,50,rads(-60),rads(0),true);

        c.closePath();

 

        c.moveTo(450,50);

        c.arcTo(500,50,500,150,30);

        c.arcTo(500,150,400,150,20);

        c.arcTo(400,150,400,50,10);

        c.arcTo(400,150,500,50,0);

        c.closePath();

 

        //二次贝塞尔曲线:一个控制点

        c.moveTo(75,250);

        c.quadraticCurveTo(100,200,175,250);

        c.fillRect(100-3,200-3,6,6);

        //三次贝塞尔曲线

        c.moveTo(200,250);

       c.bezierCurveTo(220,200,280,280,300,250);

        c.fillRect(200-3,200-3,6,6);

        c.fillRect(280-3,280-3,6,6);

 

        //定义一些图形属性并绘制曲线

        c.fillStyle = "#aaa";

        c.lineWidth = 5;

        c.fill();

        c.stroke(); //色勒外边框

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值