Salvando e Restaurando o Estado do Canvas - JavaScript
Ao utilizar métodos como fillRect()
fillText()
save()
restore()
Vamos considerar o seguinte exemplo:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Exemplo de Canvas</title>
</head>
<body>
<canvas id="canvas" width="400" height="250"></canvas>
<script>
const canvas = document.getElementById('canvas');
const context = canvas.getContext('2d');
// Desenhando um retângulo com as configurações padrão
// A cor de preenchimento padrão é preto
context.fillRect(0, 0, 150, 150);
// Salvando o estado atual (vamos chamá-lo de estado 1)
context.save();
// Alterando as configurações - definindo a cor de preenchimento como verde
context.fillStyle = '#7ed6df';
context.fillRect(15, 15, 120, 120); // Desenhando um retângulo com as novas configurações
// Salvando o estado atual (vamos chamá-lo de estado 2)
context.save();
// Alterando as configurações - definindo a cor de preenchimento como vermelho
context.fillStyle = '#ff7979';
context.fillRect(30, 30, 90, 90); // Desenhando um retângulo com as novas configurações
context.restore(); // Carregando o estado anterior (estado 2)
context.fillRect(45, 45, 60, 60); // Desenhando um retângulo com as configurações anteriores (cor verde)
context.restore(); // Carregando o estado anterior (estado 1)
context.fillRect(60, 60, 30, 30); // Desenhando um retângulo com as configurações anteriores (cor preta)
</script>
</body>
</html>

Nesse exemplo, inicialmente é criado um quadrado de 150x150 pixels usando as configurações padrão (com a cor de preenchimento preta). Ao chamar save()
#7ed6df
save()
#ff7979
Ao chamar restore()
restore()