Graphics.Save Graphics.Save Graphics.Save Graphics.Save Method

定義

この Graphics の現在の状態を保存し、保存した状態を GraphicsState で識別します。Saves the current state of this Graphics and identifies the saved state with a GraphicsState.

public:
 System::Drawing::Drawing2D::GraphicsState ^ Save();
public System.Drawing.Drawing2D.GraphicsState Save ();
member this.Save : unit -> System.Drawing.Drawing2D.GraphicsState
Public Function Save () As GraphicsState

戻り値

このメソッドは、この GraphicsState の保存状態を表す Graphics を返します。This method returns a GraphicsState that represents the saved state of this Graphics.

次のコード例は、Windows フォームで使用するために設計されています。 また必要がPaintEventArgs e、はのパラメーター、Paintイベント ハンドラー。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:

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

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

  • (2 × 2 の行列とゼロ ベクトル平行移動) に、フォームのワールド変換をリセットし、赤いソリッド ブラシで四角形を塗りつぶします。Resets the world transform of the form to an identity (2x2 identity matrix plus a zero-vector translation) and fills a rectangle with a solid red brush.

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

その結果、無変換赤で塗りつぶされた四角形を左側に、フォームの右側に翻訳されたブルーで塗りつぶされた四角形。The result is an untranslated red-filled rectangle on the left and a translated blue-filled rectangle on the right of the form.

public:
   void SaveRestore3( 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 SaveRestore3(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 SaveRestore3(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の状態を保持する情報ブロック、Graphicsは、スタックに配置します。When 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メソッド情報ブロックは、スタックから削除され、復元するために使用、Graphicsの時点での状態をSaveメソッドの呼び出し。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呼び出しによって返される、Saveメソッドを 1 回だけに渡すことが、Restoreメソッド。Note 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の時点での状態に返される、Saveメソッドの呼び出しのGraphicsStateします。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.

呼び出し、BeginContainerメソッドの場所情報ブロック、スタックへの呼び出しと同じで、Saveメソッド。Calls 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メソッドか、または、BeginContainerメソッド) に対応する呼び出しの後に、Saveメソッドは、スタックから削除されます。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メソッドでは、すべての情報ブロックが、スタックに配置 (によって、Saveメソッドか、または、BeginContainerメソッド) に対応する呼び出しの後に、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.

適用対象