Graphics.Save メソッド

定義

この 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 フォームで使用するように設計されています。また、Paint イベントハンドラーのパラメーターである PaintEventArgseが必要です。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 にリセットし (2x2 恒等行列と0ベクトル平行移動)、四角形に塗りつぶした赤色のブラシを設定します。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

注釈

GraphicsSave メソッドを呼び出すと、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 メソッドに渡すと、情報ブロックがスタックから削除され、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. Save メソッドへの特定の呼び出しによって返される GraphicsState は、Restore メソッドに1回だけ渡すことができます。Note that the GraphicsState returned by a given call to the Save method can be passed only once to the Restore method.

Save メソッドの呼び出しは入れ子にすることができます。つまり、Restore メソッドを呼び出す前に、Save メソッドを複数回呼び出すことができます。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.

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 メソッドへの対応する呼び出しがスタックから削除された後に、(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.

適用対象