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将你的设计带入下个高度
Aug 08 HTML / CSS
CSS3 伪类选择器 nth-child()说明
Jul 10 HTML / CSS
CSS3 选择器 基本选择器介绍
Jan 21 HTML / CSS
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
Jan 08 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
May 28 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
Jun 16 HTML / CSS
处理textarea中的换行和空格
Dec 12 HTML / CSS
html5实现滑块功能之type="range"属性
Feb 18 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
Sep 16 HTML / CSS
Html5 webRTC简单实现视频调用的示例代码
Sep 23 HTML / CSS
css animation配合SVG制作能量流动效果
Mar 24 HTML / CSS
CSS布局之浮动(float)和定位(position)属性的区别
Sep 25 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扩展开发入门教程
2015/02/26 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
Python break语句详解
2014/03/11 Python
Python中decorator使用实例
2015/04/14 Python
用Python进行简单图像识别(验证码)
2018/01/19 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
通过python爬虫赚钱的方法
2019/01/29 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
Python列表解析操作实例总结
2020/02/26 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
远程调用的原理
2014/07/05 面试题
最新自我评价范文
2013/11/16 职场文书
生产部统计员岗位职责
2014/01/05 职场文书
高中军训感想800字
2014/02/23 职场文书
建筑工地文明标语
2014/10/09 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
整改报告格式
2014/11/06 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android