HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线


Posted in HTML / CSS onJanuary 01, 2015

在HTML5 Canvas中,可以用以下方法描画三阶和二阶的贝塞尔曲线:

复制代码
代码如下:

context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)
context.quadraticCurveTo(cpx, cpy, x, y)

贝塞尔曲线是在二维平面上由一个“起始点”,一个“结束点”,以及一个或多个“控制点”定义的曲线。普通的三阶贝塞尔曲线使用两个控制点,而二阶曲线则只使用一个控制点。

要描画二阶贝塞尔曲线,只需设置结束点的坐标和控制点的坐标即可:

复制代码
代码如下:

context.moveTo(0,0);
context.quadraticCurveTo(100,25,0,50);

代码执行结果如下:

HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线

上面例子中的曲线从坐标(0,0)开始,到(0,50)结束,而用于控制曲线描绘的控制点的坐标为(100,25)。

相比二阶曲线,由于可以设置两个控制点,三阶贝塞尔曲线的描画更为灵活。下面的代码描画了一条”S”形的曲线:

复制代码
代码如下:

context.moveTo(150,0);
context.bezierCurveTo(0,125,300,175,150,300);

HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线

译注1:关于贝塞尔曲线,可以参考Wikipedia上的条目(http://en.wikipedia.org/wiki/Bézier_curve),其中的动画很好地诠释了贝塞尔曲线的生成机制。

译注2:目前HTML5 Canvas最高仅支持三阶贝塞尔曲线,四阶以上的曲线尚不支持。

HTML / CSS 相关文章推荐
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
Apr 01 HTML / CSS
基于css3实现漂亮便签样式
Mar 18 HTML / CSS
详解css3 flex弹性盒自动铺满写法
Sep 17 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
May 28 HTML / CSS
html5+css3实现一款注册表单实例
Apr 17 HTML / CSS
Html5实现iPhone开机界面示例代码
Jun 30 HTML / CSS
HTML5的download属性详细介绍和使用实例
Apr 23 HTML / CSS
Html5+JS实现手机摇一摇功能
Apr 24 HTML / CSS
a标签下载链接的简单实现
Sep 13 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
Nov 16 HTML / CSS
Canvas与图片压缩的示例代码
Nov 28 HTML / CSS
微信端html5页面调用分享接口示例
Mar 14 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
Dec 30 #HTML / CSS
html5实现完美兼容各大浏览器的播放器
Dec 26 #HTML / CSS
html5中 media(播放器)的api使用指南
Dec 26 #HTML / CSS
浅谈html5 响应式布局
Dec 24 #HTML / CSS
HTML5进度条特效
Dec 18 #HTML / CSS
html5+svg学习指南之SVG基础知识
Dec 17 #HTML / CSS
canvas需要在标签里直接定义宽高
Dec 17 #HTML / CSS
You might like
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
How to Auto Include a Javascript File
2007/02/02 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python设计模式大全
2016/06/27 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
澳大利亚冲浪和时尚服装网上购物:SurfStitch
2017/07/29 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
remote接口和home接口主要作用
2013/05/15 面试题
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
土木工程毕业生推荐信
2013/10/28 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
《自选商场》教学反思
2014/02/14 职场文书
班组长岗位职责
2014/03/03 职场文书
分公司任命书
2014/06/06 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
优秀党员先进材料
2014/12/18 职场文书
追悼会答谢词
2015/01/05 职场文书
2016年春节慰问信息
2015/03/25 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
实习证明格式范文
2015/06/16 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
win sever 2022如何占用操作主机角色
2022/06/25 Servers