Pennelli e forme con riempimento in GDI+
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 diverse classi di pennelli per il riempimento dell'interno di forme chiuse: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush e PathGradientBrush. 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'istanza della classe Graphics e Brush. L'istanza della classe Graphics fornisce i metodi, quali FillRectangle e FillEllipse mentre nell'oggetto Brush vengono memorizzati gli attributi del riempimento, quali il colore e il motivo. L'oggetto Brush viene passato come uno degli argomenti al metodo di riempimento. Nell'esempio che segue è illustrato come riempire un'ellisse con il colore rosso a tinta unita.
Dim mySolidBrush As New SolidBrush(Color.Red)
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40)
SolidBrush mySolidBrush = new SolidBrush(Color.Red);
myGraphics.FillEllipse(mySolidBrush, 0, 0, 60, 40);
Nota
Nell'esempio precedente il pennello è di tipo SolidBrush ed 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)
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)
Image myImage = Image.FromFile("MyTexture.bmp");
TextureBrush myTextureBrush = new TextureBrush(myImage);
myGraphics.FillEllipse(myTextureBrush, 0, 0, 100, 50);
Nell'illustrazione che segue viene mostrata l'ellisse riempita.
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)
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(
myRectangle,
Color.Blue,
Color.Green,
LinearGradientMode.Horizontal);
myGraphics.FillEllipse(myLinearGradientBrush, myRectangle);
Nell'illustrazione che segue viene mostrata l'ellisse riempita.
È 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.
Vedere anche
Attività
Procedura: disegnare un rettangolo con riempimento in un Windows Form
Procedura: disegnare un'ellisse con riempimento in un Windows Form
Riferimenti
System.Drawing.Drawing2D.HatchBrush
System.Drawing.Drawing2D.LinearGradientBrush