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中background-clip属性与background-origin属性的用法介绍
Nov 13 HTML / CSS
CSS3 分类菜单效果
May 27 HTML / CSS
CSS3关于z-index不生效问题的解决
Feb 19 HTML / CSS
html5利用canvas绘画二级树形结构图的示例
Sep 27 HTML / CSS
Html5实现iPhone开机界面示例代码
Jun 30 HTML / CSS
HTML5 embed 标签使用方法介绍
Aug 13 HTML / CSS
详解使用双缓存解决Canvas clearRect引起的闪屏问题
Apr 29 HTML / CSS
将SVG图引入到HTML页面的实现
Sep 20 HTML / CSS
如何给HTML标签中的文本设置修饰线
Nov 18 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
Sep 08 HTML / CSS
HTML+CSS+JavaScript实现图片3D展览的示例代码
Oct 12 HTML / CSS
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
Mar 30 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
discuz7 phpMysql操作类
2009/06/21 PHP
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
使用Node.js搭建静态资源服务详细教程
2017/08/02 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
2017/10/24 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
Python实现去除代码前行号的方法
2015/03/10 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
Django中针对基于类的视图添加csrf_exempt实例代码
2018/02/11 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
Django通过json格式收集主机信息
2020/05/29 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
耐克波兰官方网站:Nike波兰
2019/09/03 全球购物
网络安全方面的面试题
2016/01/07 面试题
软环境建设心得体会
2014/09/09 职场文书
党员检讨书范文
2014/12/27 职场文书
文明礼仪倡议书
2015/04/28 职场文书
golang json数组拼接的实例
2021/04/28 Golang
python数字图像处理:图像的绘制
2022/06/28 Python