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>