Saving and Restoring Drawing State
We can save the drawing state and return to it later using the following methods: The saved drawing states are stored in a stack.
Value | Description |
---|---|
save() | Saves the values for the drawing state properties |
restore() | Pops the first set of values from the state stack |
<!DOCTYPE HTML>
<html>
<head>
<title>Example</title>
<style>
canvas {
border: thin solid black;
margin: 4px
}
</style>
</head>
<body>
<canvas id="canvas" width="500" height="140" preload="auto">
Your browser doesn't support the <code>canvas</code> element
</canvas>
<div>
<button>Save</button>
<button>Restore</button>
</div>
<script>
var ctx = document.getElementById("canvas").getContext("2d");
var grad = ctx.createLinearGradient(500, 0, 500, 140);
grad.addColorStop(0, "red");
grad.addColorStop(0.5, "white");
grad.addColorStop(1, "black");
var colors = [ "blue", grad, "red", "green", "yellow", "black", "grey" ];
var cIndex = 0;
ctx.fillStyle = colors[cIndex];
draw();
var buttons = document.getElementsByTagName("button");
for ( var i = 0; i < buttons.length; i++) {
buttons[i].onclick = handleButtonPress;
}
function handleButtonPress(e) {
switch (e.target.innerHTML) {
case 'Save':
ctx.save();
cIndex = (cIndex + 1) % colors.length;
ctx.fillStyle = colors[cIndex];
draw();
break;
case 'Restore':
cIndex = Math.max(0, cIndex - 1);
ctx.restore();
draw();
break;
}
}
function draw() {
ctx.fillRect(0, 0, 500, 400);
}
</script>
</body>
</html>
Home
HTML CSS Book
HTML
HTML CSS Book
HTML
canvas:
- Getting Started with the Canvas Element
- Getting a Canvas Context
- Drawing Rectangles
- Canvas Drawing State
- Setting the Line Join Style
- Using Gradients
- Using Patterns
- Using smaller shapes with an image pattern
- Drawing Images
- Using Video Images
- Using Canvas Images
- Setting the Fill & Stroke Styles
- Saving and Restoring Drawing State
- Drawing Using Paths
- Drawing Arcs
- Drawing Bezier Curves
- Drawing Text
- Using Shadows
- Using Transparency
Related: