<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>canvas 保存、恢复、清空重绘</title>
<style>
#canvas {
background-color: #f9f9f9;
}
</style>
</head>
<body>
<canvas id="canvas">浏览器不支持 canvas </canvas>
</body>
<script>
var canvas = document.getElementById('canvas')
var ctx = canvas.getContext('2d')
canvas.height = 500
canvas.width = 1000
ctx.fillStyle = 'red'
ctx.fillRect(20, 20, 50, 50)
ctx.save() // 保存:ctx.save() 保存当前Canvas画布状态并放在栈的最上面,可以使用restore()方法依次取出。
ctx.fillStyle = 'green'
ctx.fillRect(20, 80, 50, 50)
ctx.restore() // 恢复:ctx.restore() 恢复到上一个 save() 方法之前的状态,相当于恢复到以前的某个 save 节点,解决了绘制状态总是多个重置的问题
ctx.fillRect(20, 150, 100, 100)
ctx.fillStyle = 'blue'
ctx.fillRect(320, 20, 300, 150)
ctx.clearRect(365, 60, 66, 66) // 清空:ctx.clearRect(x, y, width, height); 相当于橡皮擦,擦掉指定区域的内容
</script>
</html>
网友评论