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盒子模型详解
Apr 24 HTML / CSS
一款基于css3的动画按钮代码教程
Nov 23 HTML / CSS
移动web模拟客户端实现多方框输入密码效果【附代码】
Mar 25 HTML / CSS
HTML5 语义化结构化规范化
Oct 17 HTML / CSS
html5 canvas 使用示例
Oct 22 HTML / CSS
使用html5制作loading图的示例
Apr 14 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
Jun 17 HTML / CSS
解决HTML5手机端页面缩放的问题
Oct 27 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
Mar 09 HTML / CSS
HTML+CSS+JS实现图片的瀑布流布局的示例代码
Apr 22 HTML / CSS
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
Aug 07 HTML / CSS
使用CSS实现小三角边框原理解析
Nov 07 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
php入门教程 精简版
2009/12/13 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
php生成mysql的数据字典
2016/07/07 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
picChange 图片切换特效的函数代码
2010/05/06 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
我的画教学反思
2014/04/28 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
社区党员公开承诺书
2014/08/30 职场文书
科学发展观演讲稿
2014/09/11 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
先进单位事迹材料
2014/12/25 职场文书
学习经验交流会总结
2015/11/02 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP