首先是扩展canvas的context

比如扩展一个画五角星的代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas
</canvas><script>CanvasRenderingContext2D.prototype.fillStar = function(r, R, x, y, rot){this.beginPath();for(let i = 0; i < 5; i++){this.lineTo(Math.cos((18 + i * 72 - rot) / 180 * Math.PI) * R + x,-Math.sin((18 + i * 72 - rot) / 180 * Math.PI) * R + y);this.lineTo(Math.cos((54 + i * 72 - rot) / 180 * Math.PI) * r + x,-Math.sin((54 + i * 72 - rot) / 180 * Math.PI) * r + y);}this.closePath();this.fill();}window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");context.fillStyle = "#087";context.fillStar(150, 300, 400, 400, 0);}</script></body>
</html>

运行截图如下:

通过CanvasRenderingContext2D.prototype中定义函数可实现扩展。

下面是画椭圆,程序运行截图如下:

源码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas
</canvas><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 800;canvas.height = 800;let context = canvas.getContext("2d");if(context.ellipse){context.beginPath();context.ellipse(400, 400, 300, 200, 0, 0, Math.PI * 2);context.stroke();}else{alert("no ellipse");}}</script></body>
</html>

下面是兼容性问题,就是这段代码:

if(context.ellipse){context.beginPath();context.ellipse(400, 400, 300, 200, 0, 0, Math.PI * 2);context.stroke();
}
else{alert("no ellipse");
}

如果浏览器不支持context.ellipse那么值会为undefined,这样就会进入else里面。

canvas笔记-扩展canvas的context及画椭圆及浏览器兼容问题相关推荐

  1. canvas笔记-使用canvas画圆及点阵的使用

    如下例子: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF- ...

  2. canvas笔记-使用canvas画矩形及各样式(透明)

    程序运行截图如下: 源码如下: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  3. canvas笔记-在canvas中使用其他HTML元素

    这里使用的原理是使用css把div中关于html的元素通过布局位置,以及透明相关的设置,将其设置到canvas上,这样看起来就是在canvas绘制的按钮.然后使用JavaScript获取按钮的数据或者 ...

  4. html5 canvas 画阿迪达斯logo,HTML5 Canvas笔记——HTML5 Canvas绘图绘制太极图

    HTML5 Canvas绘图绘制太极图 太极图 * { padding: 0; margin: 0; } body { } #myCanvas { background-color: #eee; } ...

  5. canvas笔记-画一个五角星(含算法)

    算法如下: 上面的图是正三角形: 说下算法,关于上面那些x,y是怎么算出来的. 这里大圆的5个顶点,每个顶点占用的角度为360/5 = 72度,左边那个18度是通过90 - 72 = 18度. 大圆半 ...

  6. canvas笔记-画三角形并计算其外心(含算法其他绘图框架类似)

    程序运行截图如下: 源码如下: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  7. canvas笔记-画一片星空

    程序运行截图如下: 源码如下: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  8. Silverlight学习笔记三(鼠标点击动态画直线|动态设置Ellipse的Canvas.Top与Canvas.Left|动态设置Stroke属性的方法。)...

    我有可能需要把AutoCAD的部分功能搬到浏览器上,先练习一下画直线的方法.如图: MainPage.xaml代码: 大气象 <UserControl x:Class="DrawLin ...

  9. canvas笔记-clip裁剪函数的使用及探照灯实例

    在canvas中有clip函数,也就是裁剪,从原始画布中剪切任意形状和尺寸. 如下例子: <!DOCTYPE html> <html lang="en"> ...

最新文章

  1. Centos7更改root密码
  2. H3C交换机配置本地和远程登录用户名和密码
  3. 算法之排列与组合算法
  4. RFI远程文件包含的漏洞
  5. Java8函数式编程(4)--终止操作(源码)
  6. Linux学习笔记——Ubuntu更新软件源
  7. sqlserver 查询一个表的所有字段代码
  8. 内燃机附件和部件行业调研报告 - 市场现状分析与发展前景预测
  9. 多种云资源管理用什么软件好?你知道吗?
  10. nodejs 之创建文件
  11. JQuery-datetimepicker日期时间选择器,增加时分秒
  12. 金融知识图谱有什么?
  13. DataGrip 安装教程 详细版
  14. 使用docker部署java服务
  15. 三步走,帮你整理微信运营思路
  16. 别让拖延毁掉你自己 | 《拖延心理学》全书解读
  17. python md5计算
  18. 【最新面试技巧分享】面试官想看到的以及面试者需要准备的!
  19. 华为云容器镜像服务 SWR 加速镜像的拉取和推送
  20. 怎样申请建立一个全新的顶级域名后缀?

热门文章

  1. 轻松搞定RabbitMQ(二)——工作队列之消息分发机制
  2. JVM系列一:Java虚拟机与操作系统结构比较
  3. 基本配置2-被忽悠进了CentOS 6
  4. (译文)Flash,Silverlight,Win32:2011三大垂死平台
  5. 利用SQL*Loader将 Excel 数据导出到 Oracle 数据库中
  6. C语言知识分享:面向对象和面向过程到底是怎么回事?
  7. Extjs 强大的WEB窗体开发库
  8. 这让全场的chinaakd
  9. 要让玩家买单的facebook中文网
  10. Windows 2000缓冲区溢出入门