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新增颜色表示方式分享
Apr 15 HTML / CSS
纯CSS绘制漂亮的圆形图案效果
May 07 HTML / CSS
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
Aug 08 HTML / CSS
利用CSS3实现文本框的清除按钮相关的一些效果
Jun 23 HTML / CSS
利用CSS3的transition属性实现滑动效果
Aug 05 HTML / CSS
浅谈cookie和localStorage那些事
Aug 27 HTML / CSS
HTML5边玩边学(3)像素和颜色
Sep 21 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
Jan 31 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
Sep 15 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
Mar 04 HTML / CSS
元素水平垂直居中的方式
Mar 31 HTML / CSS
浅谈css实现背景颜色半透明的两种方法
Dec 06 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
用文本作数据处理
2006/10/09 PHP
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
js GridView 实现自动计算操作代码
2009/03/25 Javascript
jQuery的学习步骤
2011/02/23 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
轻松掌握JavaScript享元模式
2016/08/27 Javascript
基于jquery日历价格、库存等设置插件
2020/07/05 jQuery
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
Python单元和文档测试实例详解
2019/04/11 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
大一新生军训时的自我评价分享
2013/12/05 职场文书
爱祖国演讲稿
2014/05/04 职场文书
法律专业求职信
2014/05/24 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
活动总结范文
2014/08/30 职场文书
大一新生期末自我评价
2014/09/12 职场文书
苏州园林导游词
2015/02/03 职场文书
社区植树节活动总结
2015/02/06 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python