Graphics.Restore(GraphicsState) 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í.
Obnoví tento stav Graphics do stavu reprezentované .GraphicsState
public:
void Restore(System::Drawing::Drawing2D::GraphicsState ^ gstate);
public void Restore (System.Drawing.Drawing2D.GraphicsState gstate);
member this.Restore : System.Drawing.Drawing2D.GraphicsState -> unit
Public Sub Restore (gstate As GraphicsState)
Parametry
- gstate
- GraphicsState
GraphicsState, který představuje stav, do kterého se má obnovit .Graphics
Příklady
Následující příklad kódu je navrž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í transformaci světa formuláře na identitu a vyplní obdélník plným červeným štětcem.
Obnoví přeložený grafický stav a vyplní druhý obdélník plným modrým štětcem.
Výsledkem je nepřelládaný červeně vyplněný obdélník a přeložený obdélník s modrou výplní.
public:
void SaveRestore2( 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 SaveRestore2(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 SaveRestore2(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
Při volání Save metody objektu Graphicsje informační blok, který obsahuje stav objektu Graphics , umístěn do zásobníku. Metoda Save vrátí objekt , GraphicsState který identifikuje daný 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. Pokaždé, když zavoláte metodu Save , informační blok je umístěn do zásobníku a obdržíte GraphicsState pro informační blok. 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ý do zásobníku voláním Save metody je odebrán ze zásobníku a všechny informační bloky umístěné v zásobníku po Save volání metody jsou také odebrány.
Volání BeginContainer 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 všechny informační bloky umístěné v zásobníku Save (metodou nebo metodou BeginContainer ) po odpovídajícím volání Save metody odebrány ze zásobníku. Podobně při volání EndContainer metody jsou ze zásobníku odebrány všechny informační bloky umístěné v zásobníku Save (metodou nebo metodou BeginContainer ) po odpovídajícím volání BeginContainer metody.
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