博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Canvas贝塞尔曲线
阅读量:6453 次
发布时间:2019-06-23

本文共 1325 字,大约阅读时间需要 4 分钟。

  hot3.png

在canvas中有一个非常有用的路劲类型: 。二次及三次贝塞尔曲线都十分有用,一般用来绘制复杂有规律的图形。

quadraticCurveTo(cp1x, cp1y, x, y)

绘制二次贝塞尔曲线,cp1x,cp1y为一个控制点,x,y结束点。

quadraticCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)

绘制三次贝塞尔曲线,cp1x,cp1y控制点一,cp2x,cp2y为控制点二,x,y为结束点。

094902_DGvR_2262501.png

图中分别描述了二次贝塞尔曲线和三次贝塞尔曲线的实例,红色点表示控制点,蓝色点表示结束点,二次贝塞尔曲线有一个控制点和一个结束点,三次贝塞尔曲线有两个控制点和一个结束点。

下面画个对话框(二次贝赛尔曲线)

function draw() {  var canvas = document.getElementById('canvas');  if (canvas.getContext) {    var ctx = canvas.getContext('2d');    ctx.beginPath();    ctx.moveTo(75,25);    ctx.quadraticCurveTo(25,25,25,62.5);    ctx.quadraticCurveTo(25,100,50,100);    ctx.quadraticCurveTo(50,120,30,125);    ctx.quadraticCurveTo(60,120,65,100);    ctx.quadraticCurveTo(125,100,125,62.5);    ctx.quadraticCurveTo(125,25,75,25);    ctx.stroke();  }}

效果图:

100527_iToI_2262501.jpg

再来个稍微复杂点的(三次贝赛尔曲线)

function draw() {  var canvas = document.getElementById('canvas');  if (canvas.getContext){    var ctx = canvas.getContext('2d');    ctx.beginPath();    ctx.moveTo(75,40);    ctx.bezierCurveTo(75,37,70,25,50,25);    ctx.bezierCurveTo(20,25,20,62.5,20,62.5);    ctx.bezierCurveTo(20,80,40,102,75,120);    ctx.bezierCurveTo(110,102,130,80,130,62.5);    ctx.bezierCurveTo(130,62.5,130,25,100,25);    ctx.bezierCurveTo(85,25,75,37,75,40);    ctx.fill();  }}

效果图:

100830_FZx6_2262501.jpg

感觉这东西就是计算的时候比较费劲,但确实能画出很多复杂的东西,一点一点调整。

转载于:https://my.oschina.net/pandon/blog/1036413

你可能感兴趣的文章
关于Java String对象创建问题解惑
查看>>
应该是Angular2的一个bug?
查看>>
Eclipse(Helios) 初始化失败的问题
查看>>
SQL Server 2012 数据库镜像配置完整篇
查看>>
MariaDB 10之TokuDB存储引擎
查看>>
Flex与.NET互操作(一):基于Socket的网络连接
查看>>
WPF中Style的使用
查看>>
组策略设置服务器安全-----不显示最后的用户名
查看>>
慢查询日志的另外一种方法
查看>>
引发CPU占用率快100%的可能原因
查看>>
公司今年的一道校招笔试题--五猴分桃
查看>>
[数据恢复答疑]RAID5有一块硬盘离线后,为什么不建议马上做REBUILD?
查看>>
DB2临时表在SQL过程和SQL语句中的测试总结
查看>>
Exchange 2013 EAC之管理员重置普通用户密码
查看>>
三线跑酷例子BlocksRun的技术点
查看>>
如何应对DDOS网络攻击
查看>>
新闻奖颁给了一个写稿机器人(来自新华社)
查看>>
Android应用程序在新的进程中启动新的Activity的方法和过程分析
查看>>
【Java学习笔记】对象的流读写(串行化)
查看>>
使用SharePoint Server 2007搜索Domino Notes
查看>>