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仿造window7的开始菜单
Jun 17 HTML / CSS
CSS3 真的会替代 SCSS 吗
Mar 09 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
Jun 22 HTML / CSS
html5的localstorage详解
May 09 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
May 07 HTML / CSS
整理HTML5中表单的常用属性及新属性
Feb 19 HTML / CSS
使用html2canvas实现将html内容写入到canvas中生成图片
Jan 03 HTML / CSS
canvas简单连线动画的实现代码
Feb 04 HTML / CSS
CSS3 Tab动画实例之背景切换动态效果
Aug 23 HTML / CSS
CSS使用伪类控制边框长度的方法
Jan 18 HTML / CSS
css3 选择器
May 11 HTML / CSS
CSS 鼠标点击拖拽效果的实现代码
Dec 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过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
JavaScript this调用规则说明
2010/03/08 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
vant时间控件使用方法详解
2020/12/24 Javascript
Python脚本获取操作系统版本信息
2016/12/17 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
使用Python构造hive insert语句说明
2020/06/06 Python
Python 必须了解的5种高级特征
2020/09/10 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
环保建议书
2014/03/12 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
主题教育活动总结
2014/05/05 职场文书
管理工程专业求职信
2014/08/10 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python