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实现的鼠标悬停动画按钮
Dec 23 HTML / CSS
CSS3实现银灰色动画效果的导航菜单代码
Sep 01 HTML / CSS
canvas之万花筒效果的简单实现(推荐)
Aug 16 HTML / CSS
用CSS3的box-reflect来制作倒影效果
Nov 15 HTML / CSS
使用CSS3实现SVG路径描边动画效果入门教程
Oct 21 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
Jan 12 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
Jan 30 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
Jun 15 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
Feb 18 HTML / CSS
Html5调用手机摄像头并实现人脸识别的实现
Dec 21 HTML / CSS
AmazeUI 等分网格的实现示例
Aug 25 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
Feb 03 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
提取HTML标签
2006/10/09 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
javascript 构造函数方式定义对象
2015/01/02 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
Node.js Express 框架 POST方法详解
2017/01/23 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
vue按需加载实例详解
2019/09/06 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
python实现实时监控文件的方法
2016/08/26 Python
Python交互环境下实现输入代码
2018/06/22 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
HTML5+CSS3应用详解
2014/02/24 HTML / CSS
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
创意爱尔兰礼物:Creative Irish Gifts
2020/01/29 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
一年级家长会邀请函
2014/01/25 职场文书
党支部综合考察材料
2014/05/19 职场文书
放飞梦想演讲稿800字
2014/08/26 职场文书
秋季运动会开幕词
2015/01/28 职场文书
党员转正介绍人意见
2015/06/03 职场文书
英语读书笔记
2015/07/02 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书