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

戻り値

GraphicsState

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

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

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

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

  • フォームのワールド変換を ID (2x2 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

注釈

のメソッドGraphicsSave呼び出すと、その状態Graphicsを保持する情報ブロックがスタックに配置されます。 このメソッドは Save 、その情報ブロックを識別する a GraphicsState を返します。 識別GraphicsStateをメソッドにRestore渡すと、情報ブロックはスタックから削除され、メソッド呼び出し時Saveの状態に復元Graphicsするために使用されます。 メソッドの特定の GraphicsState 呼び出し Save によって返される値は、メソッドに Restore 1 回だけ渡すことができます。

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

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

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

適用対象