Condividi tramite


Pennelli e forme con riempimento in GDI+

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

Screenshot of a rectangle filled with a solid brush and an ellipse filled with a hatch brush.

Pennelli solidi

Per riempire una forma chiusa, è necessaria un'istanza della Graphics classe e un oggetto Brush. L'istanza della Graphics classe fornisce metodi, ad esempio FillRectangle e FillEllipse, e archivia Brush gli attributi del riempimento, ad esempio colore e motivo. L'oggetto Brush viene passato come uno degli argomenti al metodo fill. Nell'esempio di codice seguente viene illustrato come riempire un'ellisse con un colore rosso a tinta unita.

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

Nota

Nell'esempio precedente il pennello è di tipo SolidBrush, che eredita da Brush.

Pennelli tratteggio

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

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

GDI+ fornisce più di 50 stili di tratteggio; i tre stili illustrati nella figura seguente sono Horizontal, ForwardDiagonale Cross.

Screenshot of three ellipses that are filled with a horizontal hatch brush, forward diagonal hatch brush, and a cross hatch brush.

Pennelli trama

Con un pennello 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 of the My Texture dot b m p file.

Nell'esempio di codice seguente viene illustrato come riempire un'ellisse ripetendo l'immagine archiviata in MyTexture.bmp.

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

La figura seguente mostra l'ellisse riempita.

Screenshot of an ellipse that is filled with a texture brush.

Pennelli sfumato

GDI+ offre due tipi di pennelli sfumato: lineare e percorso. È possibile utilizzare un pennello sfumato lineare per riempire una forma con un colore che cambia gradualmente mentre si passa attraverso la forma orizzontalmente, verticalmente o diagonalmente. Nell'esempio di codice seguente viene illustrato come riempire un'ellisse con un pennello sfumato orizzontale che passa dal blu al verde mentre si passa dal bordo sinistro dell'ellisse al bordo destro.

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

La figura seguente mostra l'ellisse riempita.

Screenshot of an ellipse filled with a horizontal gradient brush.

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

Screenshot of an ellipse filled with a path gradient brush.

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.

Screenshot of a triangle filled with a path gradient brush.

Vedi anche