Condividi tramite


Grafica::BeginContainer

Il metodo Graphics::BeginContainer inizia un nuovo contenitore grafico.

Sintassi

GraphicsContainer BeginContainer();

Valore restituito

Tipo: GraphicsContainer

Questo metodo restituisce un valore che identifica il contenitore.

Commenti

Usare questo metodo per creare contenitori grafici annidati. I contenitori grafici vengono usati per mantenere lo stato della grafica, ad esempio trasformazioni, aree di ritaglio e varie proprietà di rendering.

Il metodo Graphics::BeginContainer restituisce un valore di tipo GraphicsContainer. Al termine dell'uso di un contenitore, passare tale valore al metodo Graphics::EndContainer . Il tipo di dati GraphicsContainer è definito in Gdiplusenumenums.h.

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

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

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

Attenzione Quando si chiama Graphics::EndContainer, tutti i blocchi di informazioni inseriti nello stack (da Graphics ::Save o by Graphics:: BeginContainer) dopo la chiamata corrispondente a Graphics:: BeginContainer vengono rimossi dallo stack. Analogamente, quando si chiama Graphics::Restore, tutte le informazioni bloccate nello stack (da Graphics ::Save o by Graphics:: BeginContainer) dopo la chiamata corrispondente a Graphics:: Save vengono rimosse dallo stack.
 
Per altre informazioni sui contenitori grafici, vedere Contenitori grafici annidati.

Esempio

Nell'esempio seguente viene impostata un'area di ritaglio per un oggetto Graphics e viene avviato un contenitore grafico. Imposta quindi un'area di ritaglio aggiuntiva per il contenitore e disegna rettangoli che illustrano l'area di ritaglio efficace all'interno del contenitore.

VOID Example_BeginContainer(HDC hdc)
{
   Graphics graphics(hdc);

   // Set the clipping region for the Graphics object.
   graphics.SetClip(Rect(10, 10, 150, 150));

   // Begin a graphics container.
   GraphicsContainer container = graphics.BeginContainer();

   // Set an additional clipping region for the container.
   graphics.SetClip(Rect(100, 50, 100, 75));

   // Fill a red rectangle in the container.
   SolidBrush redBrush(Color(255, 255, 0, 0));
   graphics.FillRectangle(&redBrush, 0, 0, 400, 400);

   // End the container, and fill the same rectangle with blue. 
   graphics.EndContainer(container);
   SolidBrush blueBrush(Color(128, 0, 0, 255));
   graphics.FillRectangle(&blueBrush, 0, 0, 400, 400);

   // Set the clipping region to infinite, and draw the outlines 
   // of the two previous clipping regions.
   graphics.ResetClip();
   Pen blackPen(Color(255, 0, 0, 0), 2.0f);
   graphics.DrawRectangle(&blackPen, 10, 10, 150, 150);
   graphics.DrawRectangle(&blackPen, 100, 50, 100, 75);
}

Requisiti

   
Client minimo supportato Windows 10 Build 20348
Server minimo supportato Windows 10 Build 20348
Intestazione gdiplusgraphics.h

Vedi anche

Grafica

Contenitori di oggetti Graphics

Grafica::EndContainer

Grafica::Restore

Grafica::Salva

Uso di contenitori di oggetti Graphics