Graphics.Save Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Salva o estado atual deste Graphics e identifica o estado salvo com um 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
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 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 do mundo do Windows Form por um vetor (100, 0).
Salva o estado gráfico do formulário.
Redefine a transformação do mundo do formulário para 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 traduzido à direita do formulário.
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
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 . Cada vez 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 de Save método que retornou esse específico 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
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários