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实现动态的二级三级菜单效果实例源码
Jan 04 HTML / CSS
使用简单的CSS3属性实现炫酷读者墙效果
Jan 08 HTML / CSS
一款恶搞头像特效的制作过程 利用css3和jquery
Nov 21 HTML / CSS
CSS3+Sprite实现僵尸行走动画特效源码
Jan 27 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
Apr 26 HTML / CSS
css3翻牌翻数字的示例代码
Feb 07 HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
Nov 10 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
Aug 28 HTML / CSS
HTML5中微数据概述及在搜索引擎中的使用举例
Feb 07 HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
Apr 24 HTML / CSS
深入解析HTML5的IndexedDB索引数据库
Sep 14 HTML / CSS
基于canvas的骨骼动画的示例代码
Jun 12 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
第八节 访问方式 [8]
2006/10/09 PHP
我的论坛源代码(四)
2006/10/09 PHP
PHP 文件类型判断代码
2009/03/13 PHP
PHP5函数小全(分享)
2013/06/06 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
js实现从中间开始往上下展开网页窗口的方法
2015/03/02 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
webpack4简单入门实例
2018/09/06 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python:print格式化输出到文件的实例
2018/05/14 Python
详解flask表单提交的两种方式
2018/07/21 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
党支部承诺书范文
2014/03/28 职场文书
给孩子的新年寄语
2014/04/08 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
工作失职检讨书范文
2015/05/05 职场文书