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和HTML5的支持状况
Oct 31 HTML / CSS
浅谈CSS3 动画卡顿解决方案
Jan 02 HTML / CSS
css3 flex布局 justify-content:space-between 最后一行左对齐
Jan 02 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
Jul 16 HTML / CSS
HTML5标签小集
Aug 02 HTML / CSS
html5 css3网站菜单实现代码
Dec 23 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
May 08 HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
Apr 08 HTML / CSS
萌新HTML5 入门指南(二)
Nov 09 HTML / CSS
CSS3常见动画的实现方式
Apr 14 HTML / CSS
为什么你写的height:100%不起作用
May 10 HTML / CSS
css3中2D转换之有趣的transform形变效果
Feb 24 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
用PHP生成html分页列表的代码
2007/03/18 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
Laravel 队列使用的实现
2019/01/08 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
理解javascript正则表达式
2016/03/08 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
javascript回到顶部特效
2016/07/30 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
基于python历史天气采集的分析
2019/02/14 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
Python os库常用操作代码汇总
2020/11/03 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
人力资源管理毕业生自荐信
2013/11/21 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
入党政审材料范文
2014/12/24 职场文书
Python 数据可视化之Matplotlib详解
2021/11/02 Python
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫