この
Graphics の状態を
GraphicsState によって表される状態に復元します。
名前空間: System.Drawing
アセンブリ: System.Drawing (system.drawing.dll 内)
Public Sub Restore ( _
gstate As GraphicsState _
)
Dim instance As Graphics
Dim gstate As GraphicsState
instance.Restore(gstate)
public void Restore (
GraphicsState gstate
)
public:
void Restore (
GraphicsState^ gstate
)
public void Restore (
GraphicsState gstate
)
public function Restore (
gstate : GraphicsState
)
パラメータ
- gstate
この Graphics を復元したときの状態を表す GraphicsState。
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 メソッドによって) スタックに格納されたすべての情報ブロックが、スタックから削除されます。
次の例は、Windows フォームでの使用を意図してデザインされており、Paint イベント ハンドラのパラメータである PaintEventArgse が必要です。このコードは次のアクションを実行します。
-
ベクタ (100, 0) で Windows フォームのワールド変換を平行移動します。
-
フォームのグラフィックスの状態を保存します。
-
フォームのワールド変換を単位行列にリセットし、四角形を赤いソリッド ブラシで塗りつぶします。
-
平行移動したグラフィックスの状態を復元し、2 つ目の四角形を青いソリッド ブラシで塗りつぶします。
赤で塗りつぶされた平行移動していない四角形と、青で塗りつぶされた平行移動済みの四角形が生成されます。
Public Sub SaveRestore2(ByVal e As PaintEventArgs)
' Translate transformation matrix.
e.Graphics.TranslateTransform(100, 0)
' Save translated graphics state.
Dim transState As GraphicsState = e.Graphics.Save()
' Reset transformation matrix to identity and fill rectangle.
e.Graphics.ResetTransform()
e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, 100, 100)
' Restore graphics state to translated state and fill second
' rectangle.
e.Graphics.Restore(transState)
e.Graphics.FillRectangle(New SolidBrush(Color.Blue), 0, 0, _
100, 100)
End Sub
public void SaveRestore2(PaintEventArgs e)
{
// Translate transformation matrix.
e.Graphics.TranslateTransform(100, 0);
// Save translated graphics state.
GraphicsState transState = e.Graphics.Save();
// Reset transformation matrix to identity and fill rectangle.
e.Graphics.ResetTransform();
e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 100, 100);
// Restore graphics state to translated state and fill second
// rectangle.
e.Graphics.Restore(transState);
e.Graphics.FillRectangle(new SolidBrush(Color.Blue), 0, 0, 100, 100);
}
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
.NET Framework
サポート対象 : 2.0、1.1、1.0