canvas基础学习(二)-线条的属性与星空和图形变换




以下是星空代码实现:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<canvas id="canvas" style="border: 1px solid #aaa;display: block;margin: 50px auto;">
			你当前的浏览器不支持canvas,请更换浏览器再试。
		</canvas>
		
		<script>
			window.onload = function(){
				var canvas = document.getElementById("canvas");
				
				canvas.width = 800;
				canvas.height = 500;
				
				var context = canvas.getContext("2d");
				
				context.fillStyle = "black";
				context.fillRect(0,0,canvas.width,canvas.height);
				
				for(var i = 0; i < 200; i ++){
					var r = Math.random()*10+10;
					var x = Math.random()*canvas.width;
					var y = Math.random()*canvas.height;
					var a = Math.random()*360;
					var dis = Math.min(x,canvas.width-x,y,canvas.height-y);
					if(dis >= r){
						drawStar(context, r, x, y, a);
					}
					
				}
				
				
			}
			function drawStar(cxt, R, x, y, rot){
				
				cxt.save();
				
				cxt.translate(x,y);
				cxt.rotate(rot/180*Math.PI);
				cxt.scale(R,R);
				
				starPath(cxt);
				
				cxt.fillStyle = "#f3b";
//				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();
			}
				
		</script>
		
	</body>
</html>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值