Udostępnij za pośrednictwem


Graphics.EndContainer(GraphicsContainer) Metoda

Definicja

Zamyka bieżący kontener graficzny i przywraca stan tego Graphics do stanu zapisanego przez wywołanie 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, który reprezentuje kontener, który przywraca tę metodę.

Przykłady

Poniższy przykład kodu jest przeznaczony do użycia z formularzami Systemu Windows i wymaga PaintEventArgse, który jest parametrem programu obsługi zdarzeń Paint. Kod wykonuje następujące akcje:

  • Otwiera nowy kontener graficzny i zapisuje stary kontener.

  • Tłumaczy współrzędne świata w kontenerze.

  • Wypełnia czerwony prostokąt w nowym kontenerze (przetłumaczone współrzędne).

  • Zamyka nowy kontener i przywraca zapisany kontener.

  • Wypełnia zielony prostokąt (do nieprzetłumaczonych współrzędnych) zapisanego kontenera.

Wynik jest zielonym prostokątem, który zastępuje czerwony prostokąt o tym samym rozmiarze.

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

Uwagi

Użyj tej metody z metodą BeginContainer, aby utworzyć zagnieżdżone kontenery graficzne. Kontenery grafiki zachowują stan grafiki, takie jak przekształcanie, wycinanie regionów i właściwości renderowania.

Podczas wywoływania metody BeginContainerGraphicsblok informacji, który przechowuje stan Graphics jest umieszczany na stosie. Metoda BeginContainer zwraca GraphicsContainer, która identyfikuje ten blok informacji. Po przekazaniu obiektu identyfikującego do metody EndContainer blok informacji zostanie usunięty ze stosu i zostanie użyty do przywrócenia Graphics do stanu, w którym znajdował się w czasie wywołania metody BeginContainer.

Kontenery mogą być zagnieżdżone; oznacza to, że można wywołać metodę BeginContainer kilka razy przed wywołaniem metody EndContainer. Za każdym razem, gdy wywołujesz metodę BeginContainer, blok informacji jest umieszczany na stosie i otrzymujesz GraphicsContainer dla bloku informacji. Po przekazaniu jednego z tych obiektów do metody EndContainerGraphics jest zwracany do stanu, w którym znajdował się w czasie wywołania metody BeginContainer, które zwróciło tę konkretną GraphicsContainer. Blok informacji umieszczony na stosie przez to wywołanie metody BeginContainer jest usuwany ze stosu, a wszystkie bloki informacji umieszczone na tym stosie po tym wywołaniu metody BeginContainer również zostaną usunięte.

Wywołania metody Save umieszczają bloki informacji na tym samym stosie co wywołania metody BeginContainer. Podobnie jak wywołanie metody EndContainer jest sparowane z wywołaniem metody BeginContainer, wywołanie metody Restore jest sparowane z wywołaniem metody Save.

Po wywołaniu metody EndContainer wszystkie bloki informacji umieszczone na stosie (przez metodę Save lub metodę BeginContainer) po wywołaniu metody BeginContainer zostaną usunięte ze stosu. Podobnie, po wywołaniu metody Restore wszystkie bloki informacji umieszczone na stosie (przez metodę Save lub metodę BeginContainer) po odpowiednim wywołaniu metody Save zostaną usunięte ze stosu.

Dotyczy