次の方法で共有


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

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

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

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

適用対象