Condividi tramite


Graphics.EndContainer(GraphicsContainer) Metodo

Definizione

Chiude il contenitore grafico corrente e ripristina lo stato di questo Graphics allo stato salvato da una chiamata al metodo 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)

Parametri

container
GraphicsContainer

GraphicsContainer che rappresenta il contenitore ripristinato da questo metodo.

Esempio

L'esempio di codice seguente è progettato per l'uso con Windows Form e richiede PaintEventArgse, che è un parametro del gestore eventi Paint. Il codice esegue le azioni seguenti:

  • Apre un nuovo contenitore grafico e salva il contenitore precedente.

  • Converte le coordinate del mondo nel contenitore.

  • Riempie un rettangolo rosso nelle coordinate tradotte del nuovo contenitore.

  • Chiude il nuovo contenitore e ripristina il contenitore salvato.

  • Riempie un rettangolo verde (alle coordinate non convertite) del contenitore salvato.

Il risultato è un rettangolo verde che sovralizza un rettangolo rosso con le stesse dimensioni.

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

Commenti

Usare questo metodo con il metodo BeginContainer per creare contenitori grafici annidati. I contenitori grafici mantengono lo stato della grafica, ad esempio trasformazione, area di ritaglio e proprietà di rendering.

Quando si chiama il metodo BeginContainer di un Graphics, un blocco di informazioni che contiene lo stato del Graphics viene inserito in uno stack. Il metodo BeginContainer restituisce un GraphicsContainer che identifica tale blocco di informazioni. Quando si passa l'oggetto di identificazione al metodo EndContainer, il blocco di informazioni viene rimosso dallo stack e viene usato per ripristinare il Graphics allo stato in cui si trovava al momento della chiamata al metodo BeginContainer.

I contenitori possono essere annidati; ovvero, è possibile chiamare il metodo BeginContainer più volte prima di chiamare il metodo EndContainer. Ogni volta che si chiama il metodo BeginContainer, viene inserito un blocco di informazioni nello stack e si riceve un GraphicsContainer per il blocco di informazioni. Quando si passa uno di questi oggetti al metodo EndContainer, il Graphics viene restituito allo stato in cui si trovava al momento della chiamata al metodo BeginContainer che ha restituito quel particolare GraphicsContainer. Il blocco di informazioni posizionato nello stack da tale chiamata al metodo BeginContainer viene rimosso dallo stack e tutti i blocchi di informazioni posizionati nello stack dopo tale chiamata al metodo BeginContainer vengono rimossi.

Le chiamate al metodo Save inseriscono blocchi di informazioni sullo stesso stack delle chiamate al metodo BeginContainer. Proprio come una chiamata al metodo EndContainer è associata a una chiamata al metodo BeginContainer, una chiamata al metodo Restore viene associata a una chiamata al metodo Save.

Quando si chiama il metodo EndContainer, tutti i blocchi di informazioni posizionati nello stack (dal metodo Save o dal metodo BeginContainer) dopo la chiamata corrispondente al metodo BeginContainer vengono rimossi dallo stack. Analogamente, quando si chiama il metodo Restore, tutti i blocchi di informazioni posizionati nello stack (dal metodo Save o dal metodo BeginContainer) dopo la chiamata corrispondente al metodo Save vengono rimossi dallo stack.

Si applica a