HTML5 Canvas 绘制椭圆与椭圆弧的实现
由于 HTML Canvas 2D Context标准中并没有直接绘制椭圆与椭圆弧的方法,所以浏览器普遍没有这个方法,不过,Chrome支持 ellipse方法,至于从哪个版本开始支持的,我就未查证了。IE11,Edge, Firefox, Safari目前最新版都还不支持。。。
所以,我们需要用JS来实现这个方法。原理就是用已经支持的其它方法来模拟ellipse方法,可以用lineTo, quadraticCurveTo, bezierCurveTo, arcTo, arc等方法来实现。
用lineTo来模拟的话,就是参数方程的形式,计算出椭圆上的点的坐标,逐点用lineTo绘制模拟椭圆。简单粗暴有效。
用quadraticCurveTo, bezierCurveTo是一种近似模拟,用贝塞尔曲线来拟合椭圆或椭圆弧,关键在于计算合适的控制点。有些特定场景下很适合。
用arcTo, arc来实现也比较简单,不需要复杂计算,由于arcTo, arc只提供了绘制正圆弧的功能,要绘制椭圆弧,配合scale变形就可以了。推荐使用该方法。实现代码如下:
if (CanvasRenderingContext2D.prototype.ellipse == undefined) {CanvasRenderingContext2D.prototype.ellipse = function(x, y, radiusX, radiusY, rotation, startAngle, endAngle, antiClockwise) {this.save();this.translate(x, y);this.rotate(rotation);this.scale(radiusX, radiusY);this.arc(0, 0, 1, startAngle, endAngle, antiClockwise);this.restore();}
}
使用示例:
//
var canvas = document.getElementById("canvas1"),ctx = canvas.getContext('2d');
//....
ctx.moveTo(100,200);
ctx.ellipse(300, 200, 100, 60, 0, 0, Math.PI, true);
ctx.stroke();
ellipse方法各参数的含义:
x, 椭圆圆心X坐标
y, 椭圆圆心Y坐标
radiusX, 长半轴长度
radiusY, 长半轴长度
rotation, 椭圆旋转角度 (单位是度不是弧度)
startAngle, 椭圆弧起始角弧度 (单位是弧度不是度!)
endAngle, 椭圆弧结束角弧度 (单位是弧度不是度!)
antiClockwise, 是否是逆时针方向绘制。true表示逆时针方向绘制椭圆弧,false顺时针方向绘制椭圆弧。
至于为什么一个方法内惊现 2 种角度单位,我只能说:前端标准就是这么乱!
Google出品的 canvas-5-polyfill.js 用于增强canvas兼容性,它也给canvas加上了ellipse方法
HTML5 Canvas 绘制椭圆与椭圆弧的实现相关推荐
- html5 canvas 椭圆,html5中怎么利用Canvas绘制椭圆
html5中怎么利用Canvas绘制椭圆 发布时间:2021-07-08 16:32:10 来源:亿速云 阅读:58 作者:Leah html5中怎么利用Canvas绘制椭圆,针对这个问题,这篇文章详 ...
- html弧形列表效果,JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
本文实例讲述了JavaScript+html5 canvas绘制的圆弧荡秋千效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: demo #canvas { margin:50 ...
- html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
html5: Canvas 绘制基本图形 从绘制直线 到 路径 Jack Lee 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.n ...
- 在html画一个自动缩放圆环,使用html5 canvas绘制圆环动效
最近笔者有个需求,需求内容为:一组文字显示在圆环的周围,用户可添加文字,文字围绕着圆环,每个词对应圆环周围的的蓝色小圆点,当用户鼠标放在圆环上方小蓝点时时,实现放射出三角形,再显示出文字,先看看动图效 ...
- java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片
[Java教程][HTML5] Canvas绘制简单图片 0 2016-05-13 13:00:04 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象 ...
- html5 canvas绘制圆形进度实例
2019独角兽企业重金招聘Python工程师标准>>> html5 canvas绘制圆形进度实例 <canvas id="test" width=200 h ...
- html 画动画效果,html5 canvas绘制曲线动画特效
特效描述:html5 canvas绘制 曲线动画特效. 代码结构 1. HTML代码 Balls Size Speed Delay Go! Presets: Atomic Flower Spiro Y ...
- html5时间画布走动,javascript+HTML5 canvas绘制时钟功能示例
本文实例讲述了javascript+HTML5 canvas绘制时钟功能.分享给大家供大家参考,具体如下: 效果如下: 代码: www.jb51.net canvas绘制时钟 div{text-ali ...
- 用html5做一条线,使用HTML5 canvas绘制线条的方法
使用HTML5 canvas绘制线条的方法 发布时间:2020-08-29 11:24:23 来源:亿速云 阅读:96 作者:小新 这篇文章主要介绍了使用HTML5 canvas绘制线条的方法,具有一 ...
最新文章
- 取代人类医生?AI给你做的诊断你敢信吗
- 问题集锦(48-51)
- “设为桌面图标”的ASP源代码
- npm 安装yarn_问题解决记录-npm和yarn全局安装成功后命令无法执行的问题
- Chrome网络库的请求处理
- ArcGIS实验教程——实验四十一:ArcGIS区域分析统计直方图(土地利用--坡度分级柱状统计图的制作)
- pythonsqlite3模糊_Python编写通讯录通过数据库存储实现模糊查询功能
- Nexus搭建Maven服务器
- [wbia 2.2] 对检索结果进行评估
- 计算机基础知识ip地址,计算机基础知识练习题
- java 外部类和内部类_java – 外部和内部类方法之间的锁定和同...
- 拼多多的车开向五环内!将继续撒钱,撒到你用为止...
- 计算机局域网共享本地安全策略,如何设置局域网共享
- echarts 柱状图间距修改
- 如何更改Win8,8.1中文版到英文版,亲测!
- 计算机可移动磁盘无法显示图片,移动硬盘不显示盘符原因及解决方法步骤介绍【图文详解】...
- python字体有哪些种类_Python的数据类型(字符串类型),python
- jquery DataTables 固定列(fixedcolumns)不生效问题
- 测试基础 之 黑盒测试方法
- 『VulnHub系列』Hacker Fest: 2019-Walkthrough
热门文章
- pyplot画多个图,在一个图中绘制多个子图
- 学习状态通道,Part-3:多跳交易/中心辐射通道
- 2021网易Java高级面试题及答案,王者笔记!
- Android世界时钟-时间1970-1-1 0:0无法设置的代码调用和原因
- 小翼管家linux电脑,小翼管家
- 【转】基础的重要性(程序员之路) 经验分享15篇
- 前端脚手架开发工具包
- 我的专业用是计算机用英语怎么说,要表达“我的专业是”用英语怎么说?
- 关于工作时间分配(二)
- uni-app css之background属性说明