Graphics.EndContainer(GraphicsContainer) Metodo

Definizione

Chiude il contenitore grafico corrente e riporta questo oggetto Graphics allo stato salvato dalla 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

Oggetto GraphicsContainer che rappresenta il contenitore ripristinato da questo metodo.

Esempio

L'esempio di codice seguente è progettato per l'uso con Windows Forms e richiede PaintEventArgse, che è un parametro del Paint gestore eventi. 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 tradotte) del contenitore salvato.

Il risultato è un rettangolo verde che sovralizza un rettangolo rosso della stessa dimensione.

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 BeginContainer metodo per creare contenitori grafici annidati. I contenitori grafici mantengono lo stato grafico, ad esempio trasformazione, area di ritaglio e proprietà di rendering.

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

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

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

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

Si applica a