HTML5 Canvas中使用用路径描画圆弧


Posted in HTML / CSS onJanuary 01, 2015

本文翻译自Steve Fulton & Jeff Fulton HTML5 Canvas, Chapter 2, “Advanced Path Methods, Arcs”

在Canvas绘图中,“圆弧”既可以是一个整圆,也可以是圆周的一部分。

复制代码
代码如下:

context.arc()
context.arc(x, y, radius, startAngle, endAngle, anticlockwise)

在上述方法描述中,x和y定义圆心,radius定义圆周的半径。startAngle和endAngle以极坐标值表示。anticlockwise(布尔值)定义圆弧的方向。

比如,如果我们想描画一个以点(100, 100)为圆心,半径为20的圆周,我们可以使用以下代码:

复制代码
代码如下:

context.arc(100, 100, 20, (Math.PI/180)*0, (Math.PI/180)*360, false);

执行效果为:

HTML5 Canvas中使用用路径描画圆弧

值得注意的是,在上述代码中,我们需要将起始角度(0)和结束角度(360)通过乘以(Math.PI/180)来转换成极坐标弧度。当起始角度为0而结束角度为360时,得到的是一个整圆。

除了整圆,我们也可以描画圆弧片段。下述代码描画了四分之一个圆周:

复制代码
代码如下:

context.arc(100, 100, 20, (Math.PI/180)*0, (Math.PI/180)*90, false);

HTML5 Canvas中使用用路径描画圆弧

如果我们想描画除上述圆弧之外的另外四分之三个圆周,我们可以将anticlockwise设置为true:

复制代码
代码如下:

context.arc(100, 100, 20, (Math.PI/180)*0, (Math.PI/180)*90, true);

HTML5 Canvas中使用用路径描画圆弧

译注1:在Canvas的坐标系中,Y轴的方向是向下的。

译注2:使用context.arcTo()方法也可以描画圆弧。Steve Fulton & Jeff Fulton 的 HTML5 Canvas 原著中对该方法的描述是完全错误的。正确的arcTo()总结详见:曲线之arcTo。

HTML / CSS 相关文章推荐
CSS3教程(3):border-color网页边框色彩
Apr 02 HTML / CSS
需要知道的CSS3动画技术
Jan 01 HTML / CSS
CSS3 伪类选择器 nth-child()说明
Jul 10 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
Jan 31 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
Dec 25 HTML / CSS
canvas使用注意点总结
Jul 19 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
Dec 30 HTML / CSS
HTML5的一个显示电池状态的API简介
Jun 18 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
Mar 01 HTML / CSS
如何在Canvas中添加事件的方法示例
May 21 HTML / CSS
H5离线存储Manifest原理及使用
Apr 28 HTML / CSS
HTML静态页面获取url参数和UserAgent的实现
Aug 05 HTML / CSS
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
Jan 01 #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
You might like
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
php 代码优化之经典示例
2011/03/24 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
php简单生成随机数的方法
2015/07/30 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
php中static和const关键字用法分析
2016/12/07 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
实例讲解PHP表单处理
2019/02/15 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
JavaScript面向对象精要(上部)
2017/09/12 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
python简单实现计算过期时间的方法
2015/06/09 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
Python用字典构建多级菜单功能
2019/07/11 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
Python获取excel内容及相关操作代码实例
2020/08/10 Python
渗透攻击的测试步骤
2014/06/07 面试题
环境工程大学生个人的自我评价
2013/10/08 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
2014年党支部承诺书
2014/05/30 职场文书
舞出我人生观后感
2015/06/16 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫