Graphics.Save Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Guarda o estado atual deste Graphics e identifica o estado guardado 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
Devoluções
Este método devolve a GraphicsState que representa o estado guardado deste Graphics.
Exemplos
O seguinte exemplo de código foi concebido para uso com Windows Forms e requer PaintEventArgse, que é um parâmetro do tratador de eventos Paint. O código executa as seguintes ações:
Traduz a transformação do mundo do Windows Form por um vetor (100, 0).
Guarda o estado gráfico do formulário.
Reinicia a transformação do mundo da forma para uma identidade (matriz identidade 2x2 mais uma translaçã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 preenchido a vermelho não traduzido à esquerda e um retângulo preenchido a azul traduzido à direita da forma.
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
Observações
Quando se chama o Save método de um Graphics, um bloco de informação que detém o estado de Graphics é colocado numa pilha. O Save método devolve um GraphicsState que identifica esse bloco de informação. Quando passa a identificação GraphicsState ao Restore método, o bloco de informação é removido da pilha e usado para restaurar o Graphics estado em que estava no momento da Save chamada ao método. Note-se que o GraphicsState retorno por uma dada chamada ao Save método só pode ser passado uma vez ao Restore método.
As chamadas ao Save método podem ser aninhadas; ou seja, pode chamar o Save método várias vezes antes de o Restore chamar. Cada vez que chamas o Save método, um bloco de informação é colocado na pilha, e recebes um GraphicsState para o bloco de informação. Quando passa um desses objetos ao Restore método, o Graphics é devolvido ao estado em que estava no momento da Save chamada ao método que devolveu aquele .GraphicsState O bloco de informação colocado na pilha por essa Save chamada de método é removido da pilha, e todos os blocos de informação colocados nessa pilha após essa Save chamada de método também são removidos.
As chamadas ao BeginContainer método colocam blocos de informação na mesma pilha que as chamadas ao Save método. Tal como uma Restore chamada é emparelhada com uma Save chamada, uma EndContainer chamada de método é emparelhada com uma BeginContainer chamada de método.
Quando chama o Restore método, todos os blocos de informação colocados na pilha (pelo Save método ou pelo método BeginContainer ) após a chamada correspondente ao Save método são removidos da pilha. Da mesma forma, quando chama o EndContainer método, todos os blocos de informação 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.