Graphics.Restore(GraphicsState) Método

Definição

Restaura o estado desse Graphics para o estado representado por um 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)

Parâmetros

gstate
GraphicsState

GraphicsState que representa o estado para o qual restaurar este Graphics.

Exemplos

O exemplo de código a seguir foi projetado para uso com Windows Forms e requer PaintEventArgse, que é um parâmetro do Paint manipulador de eventos. O código executa as seguintes ações:

  • Converte a transformação mundial do Formulário do Windows por um vetor (100, 0).

  • Salva o estado gráfico do formulário.

  • Redefine a transformação do mundo do formulário em uma identidade e preenche um retângulo com um pincel vermelho sólido.

  • Restaura o estado gráfico traduzido e preenche um segundo retângulo com um pincel azul sólido.

O resultado é um retângulo vermelho não traduzido e um retângulo azul traduzido.

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

Comentários

Quando você chama o Save método de um Graphics, um bloco de informações que contém o estado do Graphics é colocado em uma pilha. O Save método retorna um GraphicsState que identifica esse bloco de informações. Quando você passa a identificação GraphicsState para o Restore método , o bloco de informações é removido da pilha e é usado para restaurar o Graphics para o estado em que estava no momento da chamada do Save método. Observe que o GraphicsState retornado por uma determinada chamada para o Save método pode ser passado apenas uma vez para o Restore método .

As chamadas para o Save método podem ser aninhadas; ou seja, você pode chamar o Save método várias vezes antes de chamar o Restore método. Sempre que você chama o Save método, um bloco de informações é colocado na pilha e você recebe um GraphicsState para o bloco de informações. Quando você passa um desses objetos para o Restore método , o Graphics é retornado ao estado em que estava no momento da chamada do Save método que retornou esse determinado GraphicsState. O bloco de informações colocado na pilha por essa Save chamada de método é removido da pilha e todos os blocos de informações colocados nessa pilha após essa Save chamada de método também são removidos.

As chamadas para o BeginContainer método colocam blocos de informações na mesma pilha que as chamadas para o Save método . Assim como uma Restore chamada é emparelhada com uma Save chamada, uma EndContainer chamada de método é emparelhada com uma BeginContainer chamada de método.

Quando você chama o Restore método , todos os blocos de informações colocados na pilha (pelo Save método ou pelo BeginContainer método) após a chamada correspondente ao Save método são removidos da pilha. Da mesma forma, quando você chama o EndContainer método , todos os blocos de informações colocados na pilha (pelo Save método ou pelo BeginContainer método) após a chamada correspondente ao BeginContainer método são removidos da pilha.

Aplica-se a