canvas效果案例:贝塞尔曲线

绘制二次贝塞尔曲线

ctx.quadraticCurveTo(x1, y1, x, y);
从上一点开始绘制一条二次曲线,到(x, y)为止,并且以(x1, y1)作为控制点

ctx.beginPath();
ctx.strokeStyle = 'green';
ctx.lineWidth = 4;
// 起始点
ctx.moveTo(100, 400);//(从上一点)
ctx.quadraticCurveTo(200, 500, 300, 400);
ctx.stroke();
image.png

可以点击这使用网页版:二次贝塞尔曲线调试工具

绘制三次贝塞尔曲线

ctx.bezierCurveTo(x1, y1, x2, y2, x, y)
从上一个点开始绘制一条曲线,到(x, y)为止,并且以(x1, y1)和(x2, y2)为控制点

ctx.beginPath();
// 线的颜色, 线的粗细
ctx.strokeStyle = 'blue';
ctx.lineWidth = 4;
// 起始点
ctx.moveTo(100, 300);//(从上一点)
ctx.bezierCurveTo(150, 250, 250, 350, 300, 300);

ctx.stroke();

ctx.beginPath();
ctx.fillStyle = 'red';
ctx.font = '14px bold';
ctx.textAlign = 'center';

// 起始点
ctx.moveTo(100, 300);
ctx.fillText('(100, 300)', 100, 330);
ctx.arc(100, 300, 4, 0, 2 * Math.PI);

// 控制点1
ctx.moveTo(150, 250);
ctx.fillText('(150, 250)', 150, 230);
ctx.arc(150, 250, 4, 0, 2 * Math.PI);

// 控制点2
ctx.moveTo(250, 350);
ctx.fillText('(250, 350)', 250, 380);
ctx.arc(250, 350, 4, 0, 2 * Math.PI);

// 结束点
ctx.moveTo(300, 300);
ctx.fillText('(300, 300)', 300, 330);
ctx.arc(300, 300, 4, 0, 2 * Math.PI);

ctx.fill();
image.png

可以点击这使用网页版:三次贝塞尔曲线调试工具

这一章仅仅是简单的了解一下贝塞尔曲线的语法
如果你想更深入理解贝塞尔曲线,可以点击这里

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景: 给一系列顶点,如果只是用直线将其中的各个点依次连接起来,最终形成一个折线图,这种很容易实现。但是现实...
    狂风无迹阅读 39,598评论 12 70
  • 来源: http://www.douban.com/group/topic/14820131/ 调整变量格式: f...
    MC1229阅读 6,948评论 0 5
  • 谈谈贝塞尔曲线 最近在做项目的时候,需要用到一个动画,非常简单的动画,简单到就是直接对一个View做平移… 然而虽...
    雨润听潮阅读 6,067评论 1 16
  • 暮然回首,匆匆,已度过半生。青春年华,在虚无怀旧中空吟着忧伤的小调,絮叨那些春天的情事。 往事悠悠,零落在...
    水塘朴树阅读 545评论 4 10
  • 记得一次,我在演讲的课程上,讲了“无常”这一题目,当我把我演讲的内容表达出来之后,点评老师给了我一个这样得点评:“...
    帰零阅读 480评论 0 0