用HTML5绘制的一个星空特效图

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>用HTML5绘制的一个星空特效图</title>
 <style>
canvas{
 display: block;border:1px dotted skyblue;
}
 body{
  font-family: 微软雅黑;
 }

 </style>
</head>
<body>
 <h1>用HTML5绘制的一个星空特效图</h1> 
<canvas id="canvas" width="500" height="400">
 
</canvas>
<script>
 var nimo={};
window.onload=function(){
 nimo.canvas=document.getElementById('canvas');
 nimo.context=nimo.canvas.getContext('2d');

 
 nimo.starBgImg=new Image();
 nimo.starBgImg.src='http://sandbox.runjs.cn/uploads/rs/167/znddwgfj/star-bg.jpg';
 nimo.starBgImg.onload=function(){

  //填充星星背景
  nimo.statBg=nimo.context.createPattern(nimo.starBgImg,'repeat')  
  nimo.context.rect(0,0,nimo.canvas.width,nimo.canvas.height); 
  nimo.context.fillStyle=nimo.statBg;
  nimo.context.fill();

  //绘制月亮轮廓
  nimo.context.beginPath();
  nimo.context.arc(200,200,100,0.6*Math.PI,1.3*Math.PI);
  nimo.context.bezierCurveTo(140,119,93,224,169,295) 

  //填充月亮轮廓和设置投影
  nimo.context.shadowColor="blue";
  nimo.context.shadowBlur=3;  
  nimo.context.strokeStyle="blue";
  nimo.context.stroke();

  //填充放射渐变给月亮
  nimo.radialGradient=nimo.context.createRadialGradient(150,200,0,150,200,50);  
  nimo.radialGradient.addColorStop(0,'white')
  nimo.radialGradient.addColorStop(1,'#999')
  nimo.context.fillStyle=nimo.radialGradient;
  nimo.context.fill()

  //绘制月亮的研究和嘴巴    
  nimo.context.shadowColor="white";
  nimo.context.beginPath();
  nimo.context.moveTo(110,173);
  nimo.context.lineTo(114,173);
  nimo.context.moveTo(119,173);
  nimo.context.lineTo(123,173);  
  nimo.context.stroke();

  nimo.context.beginPath();
  nimo.context.arc(116,183,2,0,2*Math.PI);
  nimo.context.stroke();
  nimo.context.shadowColor='transparent';
  nimo.context.font="14px 微软雅黑"  
  nimo.context.fillText('好挫的月亮!',300,300)
 }
 
 
}

</script>
<p>
 demo by <a href="http://js.alixixi.com/">js.alixixi.com</a>
</p>
</body>
</html>

 

posted @ 2017-04-08 15:01  sandywei  阅读(13243)  评论(0编辑  收藏  举报