Drawing state restore

In this chapter you will learn:

  1. How to save and restore a drawing state
  2. Demo for saving and restoring drawing state

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.

ValueDescription
save()Saves the values for the drawing state properties
restore()Pops the first set of values from the state stack

Demo for saving and restoring drawing state

<!DOCTYPE HTML><!--from  jav a  2s .  c  o m-->
<html>
<head>
<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>

Click to view the demo

Next chapter...

What you will learn in the next chapter:

  1. How to control line width
Home » Javascript Tutorial » Canvas
Canvas tag
Canvas Context
Rectangle
Rectangle clear
Drawing State
Drawing state restore
Line width
Line Join Style
Line cap settings
Gradients
Linear Gradient
Radial Gradient
Path
Arcs
Two types of curve
Quadratic Bezier Curves
Cubic Bezier Curves
Clip
Text
Shadow
Transparency
Stoke style