Ler em inglês

Partilhar via


Graphics.Save Método

Definição

Salva o estado atual desse Graphics e identifica o estado salvo com um GraphicsState.

C#
public System.Drawing.Drawing2D.GraphicsState Save();

Retornos

Esse método retorna um GraphicsState que representa o estado salvo deste Graphics.

Exemplos

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

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

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

  • Redefine a transformação mundial do formulário em uma identidade (matriz de identidade 2x2 mais uma tradução de vetor zero) e preenche um retângulo com um pincel vermelho sólido.

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

O resultado é um retângulo vermelho não traduzido à esquerda e um retângulo azul-preenchido traduzido à direita do formulário.

C#
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);
}

Comentários

Quando você chama o método Save de um Graphics, um bloco de informações que contém o estado do Graphics é colocado em uma pilha. O método Save retorna um GraphicsState que identifica esse bloco de informações. Quando você passa a GraphicsState de identificação para o método Restore, 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 método Save. Observe que o GraphicsState retornado por uma determinada chamada para o método Save pode ser passado apenas uma vez para o método Restore.

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

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

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

Aplica-se a

Produto Versões
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10