js+html5实现canvas绘制椭圆形图案的方法


Posted in Javascript onMay 21, 2016

本文实例讲述了js+html5实现canvas绘制椭圆形图案的方法,HTML5 canvas 没有画椭圆的方法,以下代码可以画出椭圆,分享给大家供大家参考,具体实现方法如下:

1、在一个隐式的画布 (将 其 CSS 定义成:display:none; ) 上画园。
2、将隐式画布的影像,以不同的宽高比值,画在另一个显式的画布,以使园变成椭圆。
3、进而,加进动画功能。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>测试颜色背景</title>
<script>
var ticker=0;
var col = new Array("#000000","#A52A2A","#B8860B","pink","green","yellow","red","orange","#BB008B","#8B0000");
 
function drawBackground(){
var canvasHide=document.getElementById("hide"); //隐藏的画布
var g=canvasHide.getContext("2d"); //找出隐藏画布 hide 的画笔 g 
g.clearRect(0,0,1200,800); //清理隐藏画布
var i=0;
do { //画 不同颜色 依次同心发散的园
g.beginPath();
var grd=g.createRadialGradient(300,300,300-i*25, 300,300,265-i*25);
grd.addColorStop(0,col[(0+i+ticker)%col.length]);
grd.addColorStop(1,col[(1+i+ticker)%col.length]);
g.fillStyle=grd;
g.arc(300,300,300-i*25,0,2*Math.PI);
g.fill();
i++;
} while(i<11);
 
//找出显式画布 myCanvas 的画笔 gg 
var gg=document.getElementById("myCanvas").getContext("2d");
gg.clearRect(0,0,myCanvas.width,myCanvas.height); //清理显式画布
 
/* 将隐式画布 hide 的园形图像,
 * 以 宽 600, 高 300 的比例,
 * 画到显式画布 myCanvas,
 * 结果,隐式画布 hide 的园形图像,在显式画布 myCanvas 上 成了椭圆
 */
gg.drawImage(canvasHide,0,0,600,300); 
ticker++;
}
 
function preperation(){
setInterval('drawBackground()',1000);
 }
</script>
<style>
#myCanvas{
 position:absolute;
 left:0px;
 top:0px;
}
#hide{
 display:none;
}
</style>
</head>
 
<body onLoad="preperation()">
<canvas id="myCanvas" width="600" height="400" ></canvas>
<canvas id="hide" width="600" height="600" ></canvas>
 
</body>
</html>

希望本文所述对大家的web程序设计有所帮助。

Javascript 相关文章推荐
js left,right,mid函数
Jun 10 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
原生JS实现美图瀑布流布局赏析
Sep 07 Javascript
Jquery easyui开启行编辑模式增删改操作
Jan 14 Javascript
你知道setTimeout是如何运行的吗?
Aug 16 Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 Javascript
最常见和最有用的字符串相关的方法详解
Feb 06 Javascript
JavaScript实现简单评论功能
Aug 17 Javascript
浅析Vue项目中使用keep-Alive步骤
Jul 27 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
Nov 10 Javascript
基于vue hash模式微信分享#号的解决
Sep 07 Javascript
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 #Javascript
Markdown+Bootstrap图片自适应属性详解
May 21 #Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
May 21 #Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
May 21 #Javascript
IScroll5 中文API参数说明和调用方法
May 21 #Javascript
JavaScript的ExtJS框架中表格的编写教程
May 21 #Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
May 21 #Javascript
You might like
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
2014/11/20 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
使用Node.js在深度学习中做图片预处理的方法
2019/09/18 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
原生js实现购物车
2020/09/23 Javascript
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
python笔记(2)
2012/10/24 Python
Python序列化基础知识(json/pickle)
2017/10/19 Python
基于python log取对数详解
2018/06/08 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
自我评价中英文语句
2013/11/30 职场文书
集体婚礼证婚词
2014/01/13 职场文书
业务员薪酬管理制度
2014/01/15 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
大学学生会竞选稿
2015/11/19 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js