HTML5自学笔记[ 24 ]canvas绘图之星空草地

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML5自学笔记[ 24 ]canvas绘图之星空草地相关的知识,希望对你有一定的参考价值。

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title></title>
 6 
 7     <style>
 8         body{ background:#fff;}
 9         div{ width:800px; height:600px; margin:0 auto;}
10         canvas{ background:#000;}
11     </style>
12     <script src="drawstars.js"></script>
13 </head>
14 <body>
15     <div>
16         <canvas id="canvas1" width="800" height="600"></canvas>
17     </div>
18 </body>
19 </html>
 1 window.onload = function(){
 2 
 3     var cvs = document.getElementById(‘canvas1‘);
 4     var cxt = cvs.getContext(‘2d‘);
 5     var R;
 6 
 7     var lineGrad = cxt.createRadialGradient(cvs.width/2,cvs.height,0,cvs.width/2,cvs.height,cvs.width);
 8     lineGrad.addColorStop(0,‘#191970‘);
 9     lineGrad.addColorStop(1,‘#000‘);
10     cxt.fillStyle = lineGrad;
11     cxt.fillRect(0,0,cvs.width,cvs.height);
12 
13     //星星
14     for(var i=0;i<100;i++){
15         R = 2+5*Math.random();
16         drawStar(cxt,cvs.width*Math.random(),cvs.height*0.7*Math.random(),R,‘#FFFF00‘);
17     }
18 
19     //月亮
20     drawMoon(cxt,600,100,40,3,30,‘#FFF68F‘)
21 
22     //草地
23     cxt.save();
24 
25     cxt.beginPath();
26     cxt.moveTo(0,400);
27     cxt.bezierCurveTo(200,300,500,500,800,450);
28     cxt.lineTo(800,600);
29     cxt.lineTo(0,800);
30     cxt.closePath();
31 
32     cxt.fillStyle = ‘green‘;
33     cxt.fill();
34 
35     cxt.restore();
36 
37 
38 
39 }
40 
41 function drawMoon(cxt,x,y,r,d,rot,fillColor){
42     cxt.save();
43 
44     cxt.translate(x,y);
45     cxt.scale(r,r);
46     cxt.rotate(rot*Math.PI/180);
47 
48     moonPath(cxt,d);
49 
50     cxt.fillStyle = ‘yellow‘ || fillColor;
51 
52     cxt.fill();
53 
54     cxt.restore();
55 }
56 
57 function moonPath(cxt,d){
58     cxt.beginPath();
59     cxt.arc(0,0,1,0.5*Math.PI,1.5*Math.PI,true);
60     cxt.moveTo(0,-1);
61     cxt.arcTo(d,0,0,1,Math.sqrt(1+d*d)/d);
62 }
63 
64 function drawStar(cxt,x,y,R,fillColor){
65     cxt.save();
66 
67 
68     cxt.translate(x,y);
69     cxt.rotate(360*Math.random()*Math.PI/180);
70     cxt.scale(R,R);
71 
72     starPath(cxt);
73 
74     cxt.fillStyle = fillColor;
75 
76     cxt.fill();
77     cxt.restore();
78 
79 
80 
81 }
82 function starPath(cxt){
83     cxt.beginPath();
84     for(var i=0;i<5;i++){
85         cxt.lineTo(Math.cos((18+72*i)*Math.PI/180),-Math.sin((18+72*i)*Math.PI/180));
86         cxt.lineTo(Math.cos((54+72*i)*Math.PI/180)*0.5,-Math.sin((54+72*i)*Math.PI/180)*0.5);
87     }
88     cxt.closePath();
89 }

该实例来自慕课网的学习,感兴趣的朋友可以去学习一下哦~

技术分享

以上是关于HTML5自学笔记[ 24 ]canvas绘图之星空草地的主要内容,如果未能解决你的问题,请参考以下文章

HTML5自学笔记[20 ]canvas绘图实例之绘制倒影

HTML5自学笔记[ 15 ]canvas绘图基础6

HTML5自学笔记[ 17 ]canvas绘图基础4

HTML5自学笔记[ 21 ]canvas绘图实例之马赛克

HTML笔记四,HTML5的绘图支持

HTML5 Canvas 性能:加载图像与绘图