次の方法で共有


Graphics.Restore(GraphicsState) メソッド

定義

この Graphics の状態を、GraphicsStateで表される状態に復元します。

public:
 void Restore(System::Drawing::Drawing2D::GraphicsState ^ gstate);
public void Restore (System.Drawing.Drawing2D.GraphicsState gstate);
member this.Restore : System.Drawing.Drawing2D.GraphicsState -> unit
Public Sub Restore (gstate As GraphicsState)

パラメーター

gstate
GraphicsState

この Graphicsを復元する状態を表す GraphicsState

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

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

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

  • フォームのワールド変換を ID にリセットし、単色の赤いブラシで四角形を塗りつぶします。

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

結果は、未翻訳の赤塗りの四角形と、青で塗りつぶされた変換された四角形になります。

public:
   void SaveRestore2( 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 SaveRestore2(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 SaveRestore2(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 メソッドによって) スタックに配置されたすべての情報ブロックがスタックから削除されます。

適用対象