Pennelli e forme riempite

Una forma chiusa, quale un rettangolo o un'ellisse, è costituita da un contorno e da un interno. Il contorno viene tracciato con una penna e l'interno viene riempito con un pennello. In GDI+ sono disponibili svariate classi di pennelli per il riempimento dell'interno di forme chiuse: SolidBrush, HatchBrush, TextureBrush e GradientBrush. Tutte queste classi ereditano dalla classe Brush. Nell'immagine seguente viene mostrato un rettangolo riempito con un pennello a tinta unita e una ellisse riempita con un pennello tratteggiato.

Pennelli a tinta unita

Per riempire una forma chiusa sono necessari un oggetto Graphics e un oggetto Brush. L'oggetto Graphics fornisce i metodi, quali FillRectangle e FillEllipse, e nell'oggetto Brush vengono memorizzati gli attributi del riempimento, quali il colore e il motivo. L'oggetto Brush viene passato come uno degli argomenti del metodo di riempimento. L'esempio seguente consente di riempire un'ellisse con un colore rosso a tinta unita.

Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)
[C#]
SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);

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

Pennello tratteggiato

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

Dim myHatchBrush As _
   New HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green)
[C#]
HatchBrush myHatchBrush = 
   new HatchBrush(HatchStyle.Vertical, Color.Blue, Color.Green);

In GDI+ sono disponibili oltre 50 stili di tratteggio. I tre stili mostrati nell'immagine seguente sono Horizontal, ForwardDiagonal e Cross.

Pennelli a trama

Un pennello a trama consente di riempire una forma con un modello memorizzato in una bitmap. Si supponga ad esempio che l'immagine seguente sia memorizzata in un file su disco con nome MyTexture.bmp.

L'esempio seguente consente di riempire un'ellisse ripetendo l'immagine memorizzata in MyTexture.bmp:

Dim myImage As Image = Image.FromFile("MyTexture.bmp")
Dim myTextureBrush As New TextureBrush(myImage)
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50)
[C#]
Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);

Nell'illustrazione che segue è visibile l'ellisse riempito.

Pennelli sfumati

In GDI+ sono disponibili due tipi di pennelli sfumati: lineare e di percorso. Un pennello sfumato lineare consente di riempire una forma con un colore che sfuma gradatamente in un altro colore lungo la forma, orizzontalmente, verticalmente o in diagonale. L'esempio seguente consente di riempire un'ellisse con un pennello sfumato orizzontale il cui colore passa da blu a verde a partire dal margine sinistro dell'ellisse verso il margine destro.

Dim myLinearGradientBrush As New LinearGradientBrush( _
   myRectangle, _
   Color.Blue, _
   Color.Green, _
   LinearGradientMode.Horizontal)
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle)
[C#]
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
   myRectangle,
   Color.Blue,
   Color.Green,
   LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);

Nell'illustrazione che segue è visibile l'ellisse riempito.

È possibile configurare un pennello sfumato di percorso in modo che il colore sfumi a partire dal centro di un'immagine e verso i contorni.

I pennelli sfumati di percorso sono abbastanza flessibili. Il pennello sfumato utilizzato per riempire il triangolo mostrato nell'immagine seguente consente di sfumare gradualmente dal colore rosso del centro a tre colori diversi per i vertici.