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 相关文章推荐
详解CSS样式中的 !important * _ 符号
Mar 09 HTML / CSS
浅析两列自适应布局的3种思路
May 03 HTML / CSS
让IE支持CSS3的不完全兼容方案
Sep 19 HTML / CSS
基础的CSS3弹性盒Flexbox布局使用实例
Apr 08 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
Oct 19 HTML / CSS
详解css3 Transition属性(平滑过渡菜单栏案例)
Sep 05 HTML / CSS
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
Jun 02 HTML / CSS
HTML5: Web 标准最巨大的飞跃
Oct 17 HTML / CSS
HTML5的革新 结构之美
Jun 20 HTML / CSS
html5如何及时更新缓存文件(js、css或图片)
Jun 24 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
Apr 24 HTML / CSS
CSS3 制作的书本翻页特效
Apr 13 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
Python连接数据库学习之DB-API详解
2017/02/07 Python
python定向爬取淘宝商品价格
2018/02/27 Python
python生成带有表格的图片实例
2019/02/03 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
python中字符串的编码与解码详析
2020/12/03 Python
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
学习保证书怎么写
2015/02/26 职场文书
自我检讨书怎么写
2015/05/07 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书