HTML5 canvas提供了两种重要的方法来保存和恢复画布状态。
每次调用 save 方法时,画布状态都存储在堆栈中,并且每次调用 restore 方法时,都会从堆栈中返回上次保存的状态。
产品编号。 | 方法和描述 |
---|---|
1 |
save() 此方法将当前状态压入堆栈。 |
2 |
restore() 此方法在堆栈上弹出顶部状态,将上下文恢复到该状态。 |
以下是一个简单的示例,该示例使用上述方法来演示如何调用 restore ,以恢复原始状态,最后一个矩形再次用黑色绘制。
<!DOCTYPE HTML> <html> <head> <style> #test { width: 100px; height:100px; margin: 0px auto; } </style> <script type="text/javascript"> function drawShape() { //使用 DOM 获取画布元素 var canvas=document.getElementById('mycanvas'); //连接数据库凭据 if (canvas.getContext) { //确保不支持画布时不执行 var ctx=canvas.getContext('2d'); //使用默认设置绘制一个矩形 ctx.fillRect(0,0,150,150); //保存默认状态 ctx.save(); //更改设置 ctx.fillStyle='#66FFFF' ctx.fillRect( 15,15,120,120); //保存当前状态 ctx.save(); //对设置进行新的更改 ctx.fillStyle='#993333' ctx.globalAlpha=0.5; ctx.fillRect(30,30,90,90); //恢复以前的状态 ctx.restore(); //用恢复的设置绘制一个矩形 ctx.fillRect(45,45,60,60); //恢复原始状态 ctx.restore(); //用恢复的设置绘制一个矩形 ctx.fillRect(40,40,90,90); } else { alert('You need Safari or Firefox 1.5+ to see this demo.'); } } </script> </head> <body id="test" onload="drawShape();"> <canvas id="mycanvas"></canvas> </body> </html>
上面的示例将产生以下输出-