Graphics.EndContainer(GraphicsContainer) 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í.
Zavře aktuální kontejner grafiky a obnoví stav tohoto Graphics do stavu uloženého voláním metody BeginContainer().
public:
void EndContainer(System::Drawing::Drawing2D::GraphicsContainer ^ container);
public void EndContainer (System.Drawing.Drawing2D.GraphicsContainer container);
member this.EndContainer : System.Drawing.Drawing2D.GraphicsContainer -> unit
Public Sub EndContainer (container As GraphicsContainer)
Parametry
- container
- GraphicsContainer
GraphicsContainer, který představuje kontejner, který tuto metodu obnoví.
Příklady
Následující příklad kódu je určený pro použití s Windows Forms a vyžaduje PaintEventArgse
, což je parametr obslužné rutiny události Paint. Kód provede následující akce:
Otevře nový grafický kontejner a uloží starý kontejner.
Přeloží souřadnice světa v kontejneru.
Vyplní červený obdélník do nového kontejneru (přeložené souřadnice).
Zavře nový kontejner a obnoví uložený kontejner.
Vyplní zelený obdélník (do nepřeložitých souřadnic) uloženého kontejneru.
Výsledkem je zelený obdélník, který překlenuje červený obdélník stejné velikosti.
public:
void EndContainerState( PaintEventArgs^ e )
{
// Begin graphics container.
GraphicsContainer^ containerState = e->Graphics->BeginContainer();
// Translate world transformation.
e->Graphics->TranslateTransform( 100.0F, 100.0F );
// Fill translated rectangle in container with red.
e->Graphics->FillRectangle( gcnew SolidBrush( Color::Red ), 0, 0, 200, 200 );
// End graphics container.
e->Graphics->EndContainer( containerState );
// Fill untransformed rectangle with green.
e->Graphics->FillRectangle( gcnew SolidBrush( Color::Green ), 0, 0, 200, 200 );
}
public void EndContainerState(PaintEventArgs e)
{
// Begin graphics container.
GraphicsContainer containerState = e.Graphics.BeginContainer();
// Translate world transformation.
e.Graphics.TranslateTransform(100.0F, 100.0F);
// Fill translated rectangle in container with red.
e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 200, 200);
// End graphics container.
e.Graphics.EndContainer(containerState);
// Fill untransformed rectangle with green.
e.Graphics.FillRectangle(new SolidBrush(Color.Green), 0, 0, 200, 200);
}
Public Sub EndContainerState(ByVal e As PaintEventArgs)
' Begin graphics container.
Dim containerState As GraphicsContainer = _
e.Graphics.BeginContainer()
' Translate world transformation.
e.Graphics.TranslateTransform(100.0F, 100.0F)
' Fill translated rectangle in container with red.
e.Graphics.FillRectangle(New SolidBrush(Color.Red), 0, 0, _
200, 200)
' End graphics container.
e.Graphics.EndContainer(containerState)
' Fill untransformed rectangle with green.
e.Graphics.FillRectangle(New SolidBrush(Color.Green), 0, 0, _
200, 200)
End Sub
Poznámky
Tuto metodu použijte s metodou BeginContainer k vytvoření vnořených grafických kontejnerů. Grafické kontejnery zachovají grafický stav, jako jsou transformace, výřez oblasti a vlastnosti vykreslování.
Při volání BeginContainer metody Graphics, informační blok, který obsahuje stav Graphics se umístí do zásobníku. Metoda BeginContainer vrátí GraphicsContainer, která identifikuje daný blok informací. Když předáte identifikaci objektu do EndContainer metoda, informační blok se odebere ze zásobníku a slouží k obnovení Graphics do stavu, ve který byl v době volání metody BeginContainer.
Kontejnery lze vnořit; to znamená, že metodu BeginContainer můžete volat několikrát předtím, než zavoláte metodu EndContainer. Při každém volání metody BeginContainer se do zásobníku vloží informační blok a obdržíte GraphicsContainer bloku informací. Když předáte jeden z těchto objektů do EndContainer metoda, Graphics se vrátí do stavu, ve který byl v době volání metody BeginContainer, která vrátila konkrétní GraphicsContainer. Informační blok umístěný do zásobníku voláním metody BeginContainer je ze zásobníku odebrán a všechny informační bloky umístěné v daném zásobníku po volání metody BeginContainer se také odeberou.
Volání Save metody umístí informační bloky do stejného zásobníku jako volání BeginContainer metody. Stejně jako je volání metody EndContainer spárováno s voláním metody BeginContainer, je volání metody Restore spárováno s voláním metody Save.
Při volání EndContainer metoda jsou všechny informační bloky umístěné v zásobníku (metodou Save nebo metodou BeginContainer) po odpovídajícím volání metody BeginContainer odebrány ze zásobníku. Podobně když zavoláte Restore metodu, všechny informační bloky umístěné v zásobníku (metodou Save nebo metodou BeginContainer) po odpovídajícím volání metody Save se ze zásobníku odeberou.