save()和restore()——弧度制——等5.4.2.html笔记

画完一个图后

保存canvas状态→save()

保存使处安全状态,不影响别人,也不被他人影响。

  

 

接着画完别的图形后

恢复canvas状态→restore()

释放出原来安全区域的图形

养成好习惯

<!doctype html>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta>

</head>


<body>
<canvas id="myCanvas" width="700" height="300"></canvas>
<script language="javascript">
//var c=document.getElementById("myCanvas");
//var ctx=c.getContext("2d");
function drawTop(ctx,fillStyle){
	ctx.fillStyle这个是属性=fillStyle这个是参数;
	ctx.beginPath();
	ctx.arc(0,0,30,0,Math.PI,true);               角度均采用弧度制
	ctx.closePath();         ture是逆时针,所以只画一个雨伞的话以0,0为原点逆时针旋转是看不见的,需要改变坐标,如(30,30……)(去掉移动函数记得获取画布环境
	ctx.fill();
}
function drawGrip(ctx){
	ctx.save();                                   保存                          
	ctx.fillStyle="blue";
	ctx.fillRect(-1.5,0,1.5,40);
	ctx.beginPath();
	//那个钩
	ctx.strokeStyle="blue";
	ctx.arc(-5,40,4,Math.PI,Math.PI*2,true);      角度均采用弧度制
	ctx.stroke();
	//到此
	ctx.closePath(); 
	ctx.restore();                                恢复
}
function draw(){
	var ctx=document.getElementById('myCanvas').getContext("2d");
	ctx.translate(80,80);移动坐标空间,亦称“重置”
	for(var i=1;i<10;i++)
{
	ctx.save();                                   保存
	ctx.translate(60*i,0);
	drawTop(ctx,"rgb("+(30*i)+","+(255-30*i)+",255)");
	drawGrip(ctx);
	ctx.restore();                                恢复
}
}
window.onload=function(){
	draw();
}
</script>
</body>
</html>

  

 

 

posted @ 2014-04-30 16:08  coke126  阅读(181)  评论(0编辑  收藏  举报