Graphics の Save メソッドを呼び出すと、Graphics の状態を保持している情報ブロックがスタックに格納されます。Save メソッドは、その情報ブロックを識別する GraphicsState を返します。識別対象の GraphicsState を Restore メソッドに渡すと、その情報ブロックはスタックから削除され、Graphics を Save メソッド呼び出し時の状態に復元するために使用されます。Save メソッドを呼び出して返された GraphicsState を Restore メソッドに渡すことができるのは、1 回だけです。
Save メソッドの呼び出しは入れ子にできます。つまり Restore メソッドを呼び出す前に Save メソッドを複数回呼び出すことができます。Save メソッドを呼び出すたびに、情報ブロックがスタックに格納され、その情報ブロックの GraphicsState を受け取ります。これらのオブジェクトの 1 つを Restore メソッドに渡すと、Graphics は、その GraphicsState を返した Save メソッドの呼び出し時の状態に戻ります。その Save メソッドの呼び出しによってスタックに置かれた情報ブロックはスタックから削除されます。さらに、Save メソッドの呼び出し後にスタックに置かれたすべての情報ブロックも削除されます。
BeginContainer メソッドの呼び出しは、Save メソッドの呼び出しと同じスタックに情報ブロックを配置します。Restore 呼び出しが Save 呼び出しと対になっているのと同様に、EndContainer メソッド呼び出しは BeginContainer メソッド呼び出しと対になっています。
Restore メソッドを呼び出すと、対応する BeginContainer メソッドの呼び出し後に (Save メソッドまたは Save メソッドによって) スタックに格納されたすべての情報ブロックが、スタックから削除されます。同様に、EndContainer メソッドを呼び出すと、対応する BeginContainer メソッドの呼び出し後に (Save メソッドまたは BeginContainer メソッドによって) スタックに格納されたすべての情報ブロックが、スタックから削除されます。