Graphics.Save メソッド

定義

この Graphics の現在の状態を保存し、保存した状態を 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

戻り値

このメソッドは、この Graphics の保存状態を表す GraphicsState を返します。

次のコード例は、Windows フォームで使用するように設計されており、イベント ハンドラーのPaintパラメーターである が必要PaintEventArgseです。 コードは、次のアクションを実行します。

  • Windows フォームのワールド変換をベクター (100、0) で変換します。

  • フォームのグラフィックス状態を保存します。

  • フォームのワールド変換を ID (2 x 2 の ID 行列と 0 ベクトル変換) にリセットし、四角形に赤い純色のブラシを塗りつぶします。

  • 翻訳されたグラフィックスの状態を復元し、四角形に青い純色のブラシを塗りつぶします。

結果は、左に赤で塗りつぶされた未翻訳の四角形と、フォームの右側に変換された青で塗りつぶされた四角形です。

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 を保持する情報ブロックがスタックに配置されます。 メソッドは Save 、その情報ブロックを識別する を GraphicsState 返します。 識別を GraphicsState メソッドにRestore渡すと、情報ブロックはスタックから削除され、 をメソッド呼び出し時Saveの状態に復元Graphicsするために使用されます。 メソッドの特定の GraphicsState 呼び出しによって返される は、 Save メソッドに Restore 1 回だけ渡すことに注意してください。

メソッドの Save 呼び出しは入れ子にすることができます。つまり、 メソッドを Save 呼び出す前にメソッドを Restore 複数回呼び出すことができます。 メソッドを Save 呼び出すたびに、情報ブロックがスタックに配置され、情報ブロックの を受け取ります GraphicsState 。 これらのオブジェクトの 1 つを メソッドにRestore渡すと、 Graphics は、その特定GraphicsStateの を返したメソッド呼び出し時の Save 状態に返されます。 その Save メソッド呼び出しによってスタックに配置された情報ブロックはスタックから削除され、その Save メソッド呼び出し後にそのスタックに配置されたすべての情報ブロックも削除されます。

メソッドの呼び出しは、 BeginContainer メソッドの呼び出しと同じスタックに情報ブロックを Save 配置します。 呼び出しが Restore 呼び出しとペアになっているのと Save 同様に EndContainer 、メソッド呼び出しはメソッド呼び出しと BeginContainer ペアになります。

メソッドをRestore呼び出すと、メソッドの対応する呼び出しSaveの後にスタックに配置されたすべての情報ブロック (SaveメソッドまたはメソッドによってBeginContainer) がスタックから削除されます。 同様に、 メソッドをEndContainer呼び出すと、 メソッドの対応する呼び出しBeginContainerの後にスタックに配置されたすべての情報ブロック (Saveメソッドまたは メソッドによってBeginContainer) がスタックから削除されます。

適用対象