Graphics.Save Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Uloží aktuální stav a Graphics identifikuje uložený stav pomocí funkce 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
Návraty
Tato metoda vrátí GraphicsState hodnotu, která představuje uložený stav tohoto Graphics.
Příklady
Následující příklad kódu je určený pro použití s model Windows Forms a vyžaduje PaintEventArgse, což je parametr obslužné rutiny události Paint. Kód provede následující akce:
Přeloží světovou transformaci Windows Form vektorem (100, 0).
Uloží grafický stav formuláře.
Obnoví světovou transformaci formuláře na identitu (2x2 identity matrix plus nulový vektorový překlad) a vyplní obdélník plným červeným štětcem.
Obnoví přeložený grafický stav a vyplní obdélník plným modrým štětcem.
Výsledkem je nepřeložitý červený vyplněný obdélník vlevo a přeložený modrý obdélník vpravo od formuláře.
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
Poznámky
Když zavoláte metodu SaveGraphics, informační blok, který obsahuje stav Graphics je vložen do zásobníku. Metoda Save vrátí chybu GraphicsState , která identifikuje tento informační blok. Když předáte identifikaci GraphicsStateRestore metodě, informační blok se odebere ze zásobníku a slouží k obnovení Graphics stavu, ve který byl v době Save volání metody. Všimněte si, že GraphicsState vrácené daným voláním Save metody lze metodě předat pouze jednou Restore .
Volání metody Save lze vnořit. To znamená, že metodu Save můžete volat několikrát předtím, než metodu Restore zavoláte. Pokaždé, když zavoláte metodu Save , se do zásobníku vloží informační blok a obdržíte GraphicsState blok informací. Když předáte jeden z těchto objektů metodě Restore , vrátí se do stavu, Graphics ve který byl v době Save volání metody, která vrátila tento konkrétní GraphicsState. Blok informací umístěný do zásobníku voláním Save této metody se odebere ze zásobníku a odeberou se také všechny informační bloky umístěné na daném Save zásobníku po volání metody.
Volání metody BeginContainer umístí informační bloky do stejného zásobníku jako volání metody Save . Stejně jako Restore je volání spárováno s voláním Save , EndContainer je volání metody spárované s voláním BeginContainer metody.
Při volání Restore metody jsou všechny informační bloky umístěné v zásobníku (metodou Save nebo BeginContainer metodou) po odpovídajícím volání Save metody odebrány ze zásobníku. Podobně, Když voláte metodu EndContainer , všechny informační bloky umístěné v zásobníku (metodou Save nebo BeginContainer metodou) po odpovídajícím volání BeginContainer metody jsou odebrány ze zásobníku.