Graphics.Restore(GraphicsState) Graphics.Restore(GraphicsState) Graphics.Restore(GraphicsState) Graphics.Restore(GraphicsState) Method

定義

この Graphics の状態を GraphicsState によって表される状態に復元します。Restores the state of this Graphics to the state represented by a GraphicsState.

public:
 void Restore(System::Drawing::Drawing2D::GraphicsState ^ gstate);
public void Restore (System.Drawing.Drawing2D.GraphicsState gstate);
member this.Restore : System.Drawing.Drawing2D.GraphicsState -> unit
Public Sub Restore (gstate As GraphicsState)

パラメーター

gstate
GraphicsState GraphicsState GraphicsState GraphicsState

この GraphicsState を復元したときの状態を表す GraphicsGraphicsState that represents the state to which to restore this Graphics.

次のコード例は、Windows フォームで使用するように設計さPaintEventArgsれています。これはPaint 、イベントハンドラーのパラメーターであるを必要eとします。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. コードは、次のアクションを実行します。The code performs the following actions:

  • Windows フォームのワールド変換をベクター (100, 0) で変換します。Translates the world transform of the Windows Form by a vector (100, 0).

  • フォームのグラフィックスの状態を保存します。Saves the graphics state of the form.

  • フォームのワールド変換を id にリセットし、四角形に単色の赤いブラシで塗りつぶします。Resets the world transform of the form to an identity and fills a rectangle with a solid red brush.

  • 変換されたグラフィックスの状態を復元し、2番目の四角形に単色の青のブラシで塗りつぶします。Restores the translated graphics state and fills a second rectangle with a solid blue brush.

結果は、変換されていない赤で塗りつぶされた四角形と、変換された青で塗りつぶされた四角形になります。The result is an untranslated red-filled rectangle and a translated blue-filled rectangle.

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( gcnew SolidBrush( Color::Red ), 0, 0, 100, 100 );

      // Restore graphics state to translated state and fill second
      // rectangle.
      e->Graphics->Restore( transState );
      e->Graphics->FillRectangle( gcnew SolidBrush( Color::Blue ), 0, 0, 100, 100 );
   }
private 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);
}
Private 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

注釈

のメソッドをSave呼び出すと、の状態をGraphics保持する情報ブロックがスタックに配置されます。 GraphicsWhen you call the Save method of a Graphics, an information block that holds the state of the Graphics is put on a stack. メソッドSaveは、そのGraphicsState情報ブロックを識別するを返します。The Save method returns a GraphicsState that identifies that information block. 識別GraphicsStateRestoreメソッドに渡すと、情報ブロックがスタックから削除され、 Saveメソッド呼び出し時の状態Graphicsにを復元するために使用されます。When you pass the identifying GraphicsState to the Restore method, the information block is removed from the stack and is used to restore the Graphics to the state it was in at the time of the Save method call. メソッドへのGraphicsState特定の呼び出しによって返されるは、 Restoreメソッドに1回だけ渡すことができます。 SaveNote that the GraphicsState returned by a given call to the Save method can be passed only once to the Restore method.

メソッドの呼び出しSaveは入れ子にすることができます。つまり、メソッドSaveを呼び出すRestore前に、メソッドを複数回呼び出すことができます。Calls to the Save method can be nested; that is, you can call the Save method several times before you call the Restore method. Saveメソッドを呼び出すたびに、情報ブロックがスタックに格納され、情報ブロックのをGraphicsState受け取ります。Each time you call the Save method, an information block is put on the stack, and you receive a GraphicsState for the information block. これらのオブジェクトRestoreのいずれかをメソッドに渡すと、そのGraphics特定GraphicsStateのを返したSaveメソッド呼び出しの時点の状態にが返されます。When you pass one of those objects to the Restore method, the Graphics is returned to the state it was in at the time of the Save method call that returned that particular GraphicsState. そのSaveメソッド呼び出しによってスタックに配置された情報ブロックがスタックから削除され、そのSaveメソッド呼び出しの後にそのスタックに配置されたすべての情報ブロックが削除されます。The information block placed on the stack by that Save method call is removed from the stack, and all information blocks placed on that stack after that Save method call are also removed.

メソッドを呼び出すと、メソッドのSave呼び出しと同じスタックに情報ブロックが配置されます。 BeginContainerCalls to the BeginContainer method place information blocks on the same stack as calls to the Save method. Restore呼び出しSaveが呼び出しとペアになっているのとEndContainer同様に、メソッド呼び出しはBeginContainerメソッド呼び出しとペアになります。Just as a Restore call is paired with a Save call, a EndContainer method call is paired with a BeginContainer method call.

Restoreメソッドを呼び出すと、 Saveメソッドへの対応する呼び出しがスタックから削除Saveされた後BeginContainer 、(メソッドまたはメソッドによって) スタックに配置されたすべての情報ブロックがスタックから削除されます。When you call the Restore method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the Save method are removed from the stack. 同様に、 EndContainerメソッドを呼び出すと、 BeginContainerメソッドへの対応する呼び出しがスタックからSave削除されたBeginContainer後、(メソッドまたはメソッドによって) スタックに配置されたすべての情報ブロックがスタックから削除されます。Likewise, when you call the EndContainer method, all information blocks placed on the stack (by the Save method or by the BeginContainer method) after the corresponding call to the BeginContainer method are removed from the stack.

適用対象