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í 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í hodnotu GraphicsState , která představuje uložený stav tohoto Graphicsobjektu .
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 Paint události. Kód provede následující akce:
Přeloží světovou transformaci formuláře Windows Pomocí vektoru (100, 0).
Uloží stav grafiky formuláře.
Obnoví světovou transformaci formuláře na identitu (matice identit 2x2 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řelládaný červeně vyplněný obdélník vlevo a přeložený modře vyplněný obdélník na pravé straně 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 Save objektu Graphics, informační blok, který obsahuje stav objektu Graphics , se umístí do zásobníku. Metoda Save vrátí objekt GraphicsState , který identifikuje tento informační blok. Když předáte identifikaci GraphicsStateRestore metodě, informační blok se odebere ze zásobníku a použije se k obnovení Graphics do stavu, ve který byl v době Save volání metody. Všimněte si GraphicsState , že vrácené daným voláním Save metody lze metodě předat pouze jednou Restore .
Save Volání metody mohou být vnořená. To znamená, že před voláním metody můžete metodu SaveRestore volat několikrát. Při každém volání Save metody se do zásobníku umístí informační blok a vy obdržíte GraphicsState informační blok pro 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 konkrétní GraphicsState. Informační blok umístěný na zásobníku voláním Save metody je ze zásobníku odebrán a všechny informační bloky umístěné v zásobníku po Save volání metody jsou také odebrány.
BeginContainer Volání metody umístí informační bloky do stejného zásobníku Save jako volání metody. Stejně jako Restore je volání spárováno s voláním Save , EndContainer je volání metody spárováno s voláním BeginContainer metody.
Při volání Restore metody jsou ze zásobníku odebrány všechny informační bloky umístěné na zásobníku ( Save metodou nebo metodou BeginContainer ) po odpovídajícím volání Save metody. Podobně, Když voláte metodu EndContainer , všechny informační bloky umístěné na zásobníku (metodou Save nebo metodou BeginContainer ) po odpovídajícím volání BeginContainer metody jsou odebrány ze zásobníku.
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro