可以将画笔不同时刻的状态记录下来,然后保存到一个栈里面存储,后面可以在栈里面恢复画笔的状态,继续使用之前的状态绘制,效果如下:将红色,蓝色,黄色的状态都存储起来了,然后逐个恢复状态,就可以画出黄色,蓝色。红色的矩形:
源代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>保存和恢复画笔状态</title>
</head>
<body>
<div>保存和恢复画笔状态</div>
<canvas id="canvas" width="800" height="800"></canvas>
<script>
// 获取画笔
const canvas = document.getElementById('canvas')
const context = canvas.getContext('2d')
// 画一个红色的矩形
context.fillStyle = 'red'
context.fillRect(0, 0, 100, 100)
// 保存画笔状态
context.save()
// 画一个蓝色的矩形
context.fillStyle = 'blue'
context.fillRect(100, 100, 100, 100)
// 保存画笔状态
context.save()
// 画一个黄色的矩形
context.fillStyle = 'yellow'
context.fillRect(200, 200, 100, 100)
context.save()
// 恢复画笔的状态:此时就会再使用黄色画笔绘制一个矩形出来
context.restore()
context.fillRect(300, 300, 100, 100)
// 恢复画笔的状态:此时会再使用蓝色的画笔绘制一个矩形出来
context.restore()
context.fillRect(400, 400, 100, 100)
</script>
</body>
</html>