canvas 星空

<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<canvas id="canvas" style="border: 1px solid #aaa;display: block;margin: 50px auto;"></canvas>
</body>
</html>
window.onload = function(){
		var canvas = document.getElementById('canvas');

		canvas.width = 800;
		canvas.height = 800;
		var context = canvas.getContext('2d');
		
		context.fillStyle = 'black';
		context.fillRect(0,0,canvas.width,canvas.height);
		for (var i = 0; i < 100; i++) {
			var r = Math.random()*10+10;
			var x = Math.random()*canvas.width;
			var y = Math.random()*canvas.height;
			var a = Math.random()*360;
			drawStar(context,r,x,y,a);
		}
	}
	/*
		图像变换
		位移 translate(x,y) 多个使用会叠加
		旋转rotate(deg);
		缩放 scale(sx,sy) 不仅仅是大小发生变化,图片的起始坐标,边框的宽度都会发生变化

		save() 保存状态
		restore()
	*/
	function drawStar(cxt,r,x,y,rot){
		
		//绘制出在(x,y),大小为r,旋转为rot的五角星
		cxt.save();

		cxt.translate(x,y);
		cxt.rotate(rot);
		cxt.scale(r,r);

		starPath(cxt);

		cxt.fillStyle = '#fb3';
		//cxt.strokeStyle = '#fd5';
		//cxt.lineWidth = 3;
		//cxt.lineJoin = 'round';

		cxt.fill();
		//cxt.stroke();

		cxt.restore();

		
	}
	function starPath(cxt){
		cxt.beginPath();
		for (var i = 0; i < 5; i++) {
			cxt.lineTo(Math.cos((18+i*72)/180*Math.PI),-Math.sin((18+i*72)/180*Math.PI));
			cxt.lineTo(Math.cos((54+i*72)/180*Math.PI)*0.5,-Math.sin((54+i*72)/180*Math.PI)*0.5);
			
		}
		
		cxt.closePath();
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值