贝塞尔曲线详细讲解,如何用 Canvas 绘制三阶贝塞尔曲线?

比如我们要画一个这样的曲线,我们该怎么画了

两个点Y轴一样高,起点:(200,100)终点:(300,100)中间的弧度怎么弄了?

  <canvas id="c1" width="600" height="400"></canvas>

    <script>
      // 1. 找到画布
      var c1 = document.getElementById("c1");

      // 判断是否有getContext
      if (!c1.getContext) {
        console.log("当前浏览器不支持canvas,请下载最新的浏览器");
      }
      // 2. 获取画笔,上下文对象
      var ctx = c1.getContext("2d");

      ctx.beginPath();
      // 起点
      ctx.moveTo(200,100)
      //终点
      var zh=[300,100]
      //控制点1的(190,50)也是按照横纵坐标
      //控制点2(280,70)也是按照横纵坐标
      ctx.bezierCurveTo(190,50,280,70,zh[0],zh[1]);

      ctx.stroke();

      ctx.closePath();
    </script>

 ctx.bezierCurveTo(190,50,280,70,zh[0],zh[1]);
一共6个参数,起那两个为控制点横纵坐标,最后两个参数为终点的横纵坐标。中间控制点可以不止两个

这样就出现了,不像的话可以详细调整数值。

<canvas id="c1" width="600" height="400"></canvas>

    <script>
      // 1. 找到画布
      var c1 = document.getElementById("c1");

      // 判断是否有getContext
      if (!c1.getContext) {
        console.log("当前浏览器不支持canvas,请下载最新的浏览器");
      }
      // 2. 获取画笔,上下文对象
      var ctx = c1.getContext("2d");

      ctx.beginPath();
      // 起点
      ctx.moveTo(200,100)
      //终点
      var zh=[300,100]
      //控制点1的(190,50)也是按照横纵坐标
      //控制点2(280,70)也是按照横纵坐标
      ctx.bezierCurveTo(190,50,280,70,200,150);
      // 第二个起点
      ctx.moveTo(200,150)
      ctx.bezierCurveTo(120,70,210,50,200,100);

      ctx.stroke();

      ctx.closePath();
    </script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值