HTML5自学笔记[ 24 ]canvas绘图之星空草地
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
body{ background:#fff;}
div{ width:800px; height:600px; margin:0 auto;}
canvas{ background:#000;}
</style>
<script src="drawstars.js"></script>
</head>
<body>
<div>
<canvas id="canvas1" width="800" height="600"></canvas>
</div>
</body>
</html>
window.onload = function(){
var cvs = document.getElementById('canvas1');
var cxt = cvs.getContext('2d');
var R;
var lineGrad = cxt.createRadialGradient(cvs.width/2,cvs.height,0,cvs.width/2,cvs.height,cvs.width);
lineGrad.addColorStop(0,'#191970');
lineGrad.addColorStop(1,'#000');
cxt.fillStyle = lineGrad;
cxt.fillRect(0,0,cvs.width,cvs.height);
//星星
for(var i=0;i<100;i++){
R = 2+5*Math.random();
drawStar(cxt,cvs.width*Math.random(),cvs.height*0.7*Math.random(),R,'#FFFF00');
}
//月亮
drawMoon(cxt,600,100,40,3,30,'#FFF68F')
//草地
cxt.save();
cxt.beginPath();
cxt.moveTo(0,400);
cxt.bezierCurveTo(200,300,500,500,800,450);
cxt.lineTo(800,600);
cxt.lineTo(0,800);
cxt.closePath();
cxt.fillStyle = 'green';
cxt.fill();
cxt.restore();
}
function drawMoon(cxt,x,y,r,d,rot,fillColor){
cxt.save();
cxt.translate(x,y);
cxt.scale(r,r);
cxt.rotate(rot*Math.PI/180);
moonPath(cxt,d);
cxt.fillStyle = 'yellow' || fillColor;
cxt.fill();
cxt.restore();
}
function moonPath(cxt,d){
cxt.beginPath();
cxt.arc(0,0,1,0.5*Math.PI,1.5*Math.PI,true);
cxt.moveTo(0,-1);
cxt.arcTo(d,0,0,1,Math.sqrt(1+d*d)/d);
}
function drawStar(cxt,x,y,R,fillColor){
cxt.save();
cxt.translate(x,y);
cxt.rotate(360*Math.random()*Math.PI/180);
cxt.scale(R,R);
starPath(cxt);
cxt.fillStyle = fillColor;
cxt.fill();
cxt.restore();
}
function starPath(cxt){
cxt.beginPath();
for(var i=0;i<5;i++){
cxt.lineTo(Math.cos((18+72*i)*Math.PI/180),-Math.sin((18+72*i)*Math.PI/180));
cxt.lineTo(Math.cos((54+72*i)*Math.PI/180)*0.5,-Math.sin((54+72*i)*Math.PI/180)*0.5);
}
cxt.closePath();
}
该实例来自慕课网的学习,感兴趣的朋友可以去学习一下哦~

HTML5自学笔记[ 24 ]canvas绘图之星空草地的更多相关文章
- HTML5自学笔记[ 15 ]canvas绘图实例之钟表
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5自学笔记[ 13 ]canvas绘图小实例之方块移动
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5自学笔记[ 12 ]canvas绘图小示例之鼠标画线
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5自学笔记[ 11 ]canvas绘图基础1
html5新增<canvas>标签用于绘制图像,默认宽高是300*150,canvas的宽高需要在这里设置,在css中设置会有问题:设置的形状,如矩形,会等比缩放,而非设置的宽高. 在不支 ...
- HTML5自学笔记[ 21 ]canvas绘图实例之马赛克
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HTML5自学笔记[ 20 ]canvas绘图实例之绘制倒影
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HTML5自学笔记[ 19 ]canvas绘图实例之炫彩时钟
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- HTML5自学笔记[ 17 ]canvas绘图基础4
绘制图像: drawImage(oImg,x,y),oImg是一个Image对象,(x,y)为绘制起点,绘制的图像大小和源图大小一样. drawImage(oImg,x,y,w,h),后两个参数设置绘 ...
- HTML5自学笔记[ 16 ]canvas绘图基础3
canvas还提供提供了一些动态方法,使图像可以旋转.缩放和移动,与css3中的方法一样. 移动:translate(x,y),x和y为横竖方向的偏移量 旋转:rotate(弧度),弧度=角度*Mat ...
随机推荐
- CodeForces 483B Friends and Presents
Friends and Presents Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I ...
- UVALive 6508 Permutation Graphs
Permutation Graphs Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit ...
- Know How And When To Use System.Message_Level To Control Messages In Oracle Forms
SYSTEM.MESSAGE_LEVEL is used to control the messages that end users see when they use the Oracle For ...
- 粒子群算法 Particle Swarm Optimization, PSO(转贴收藏)
粒子群算法(1)----粒子群算法简介 http://blog.csdn.net/niuyongjie/article/details/1569671 粒子群算法(2)----标准的粒子群算法 htt ...
- DJANGO基础学习之转义总结:escape,autoescape,safe,mark_safe
何谓转义?就是把html语言的关键字过滤掉.例如,<div>就是html的关键字,如果要在html页面上呈现<div>,其源代码就必须是<div> PS:转义其实就 ...
- CentOS系统下各文件夹的作用
linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...
- 在Spring中使用脚本
Spring支持3中不同的脚本语言(看来支持地还挺多的嘛):JRuby.Groovy和BeanShell. 这三个都是java社区的脚本语言(反正到目前为止我一个都没用过,可见我有多挫). JRuby ...
- Android实现简单短信发送器
布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- Jconsole 监控tomcat
通过jconsole监控可以获取监控tomcat的相关的数据信息 如何通过代码来获取其中的线程和内存状况呢? 首先要配置好jconsole监控的相关配置,一搜基本就是那一个, 配置配不好的话接下来的工 ...
- 2013年5月~2013年11月份(转接关于ns51服务平台项目)相关资料:
<1> [平台首页] 界面截图:(网络游客所看到的界面首页) <2>[注册] 有需求则注册会员(略...) <3>[个人空间] 注册成功后进入个人空间(有深层次的需 ...