Sdílet prostřednictvím


Graphics.EndContainer(GraphicsContainer) Metoda

Definice

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.

Platí pro