Condividi tramite


Pennelli e forme piene

Una figura chiusa, ad esempio un rettangolo o un'ellisse, è costituita da un contorno e da un interno. Il contorno viene disegnato con un oggetto Pen e l'interno viene riempito con un oggetto Brush . Windows GDI+ offre diverse classi di pennello per riempire gli interni delle figure chiuse: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush e PathGradientBrush. Tutte queste classi ereditano dalla classe Brush . La figura seguente mostra un rettangolo riempito con un pennello a tinta unita e un'ellisse riempita con un pennello tratteggio.

illustrazione che mostra un rettangolo blu e un'ellisse magenta riempita con un motivo tratteggio blu

 

Pennelli solidi

Per riempire una forma chiusa, sono necessari un oggetto Graphics e un oggetto Brush . L'oggetto Graphics fornisce metodi, ad esempio FillRectangle e FillEllipse, e l'oggetto Brush archivia gli attributi del riempimento, ad esempio colore e motivo. L'indirizzo dell'oggetto Brush viene passato come uno degli argomenti al metodo fill. Nell'esempio seguente viene riempita un'ellisse con un colore rosso a tinta unita.

SolidBrush mySolidBrush(Color(255, 255, 0, 0));
myGraphics.FillEllipse(&mySolidBrush, 0, 0, 60, 40);

Si noti che nell'esempio precedente il pennello è di tipo SolidBrush, che eredita da Brush.

Pennelli tratteggio

Quando si riempie una forma con un pennello tratteggio, si specifica un colore di primo piano, un colore di sfondo e uno stile tratteggio. Il colore di primo piano è il colore del tratteggio.

HatchBrush myHatchBrush(
   HatchStyleVertical, 
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0));

GDI+ fornisce più di 50 stili di tratteggio, specificati in HatchStyle. I tre stili illustrati nella figura seguente sono Horizontal, ForwardDiagonal e Cross.

illustrazione che mostra tre ellissi colorate di teal, ognuna con uno stile di tratteggio diverso

 

Pennelli trama

Con un pennello di trama, è possibile riempire una forma con un motivo archiviato in una bitmap. Si supponga, ad esempio, che l'immagine seguente sia archiviata in un file su disco denominato MyTexture.bmp.

screenshot di un piccolo quadrato pieno di vari colori

Nell'esempio seguente viene riempita un'ellisse ripetendo l'immagine archiviata in MyTexture.bmp.

Image myImage(L"MyTexture.bmp");
TextureBrush myTextureBrush(&myImage);
myGraphics.FillEllipse(&myTextureBrush, 0, 0, 100, 50);

La figura seguente mostra l'ellisse riempita.

illustrazione che mostra un'ellisse riempita con il modello definito in precedenza

 

Pennelli sfumato

È possibile utilizzare un pennello sfumato per riempire una forma con un colore che cambia gradualmente da una parte della forma a un'altra. Ad esempio, un pennello sfumato orizzontale cambierà colore mentre si passa dal lato sinistro di una figura a destra. Nell'esempio seguente viene riempita un'ellisse con un pennello sfumato orizzontale che passa da blu a verde mentre si passa dal lato sinistro dell'ellisse a destra.

LinearGradientBrush myLinearGradientBrush(
   myRect,
   Color(255, 0, 0, 255),
   Color(255, 0, 255, 0),
   LinearGradientModeHorizontal);
myGraphics.FillEllipse(&myLinearGradientBrush, myRect); 

La figura seguente mostra l'ellisse riempita.

illustrazione che mostra un'ellisse con un riempimento sfumato: blu a destra a verde a sinistra

Un pennello sfumatura di percorso può essere configurato per modificare il colore quando si passa dal centro di una figura verso il limite.

ilustrazione di un'ellisse che è blu scuro al centro, ombreggiatura in blu chiaro al bordo

I pennelli sfumatura di percorso sono abbastanza flessibili. Il pennello sfumato usato per riempire il triangolo nella figura seguente cambia gradualmente dal rosso al centro a ognuno di tre colori diversi nei vertici.

illustrazione di un triangolo rosso al centro, ombreggiatura a un colore diverso in ogni vertice