Condividi tramite


Procedura: disegnare con pennelli opachi e semitrasparenti

Aggiornamento: novembre 2007

Quando si riempie una forma è necessario passare un oggetto Brush a uno dei metodi di riempimento della classe Graphics. L'unico parametro del costruttore SolidBrush è un oggetto Color. Per riempire una forma opaca, impostare la componente alfa del colore su 255. Per riempire una forma semitrasparente, impostare la componente alfa su un valore qualsiasi compreso tra 1 e 254.

Quando si riempie una forma semitrasparente il colore della forma viene sfumato con i colori dello sfondo. La componente alfa consente di specificare la combinazione tra il colore della forma e quello di sfondo; i valori alfa vicini a zero rendono più intensi i colori di sfondo, mentre i valori alfa vicino a 255 rendono più intenso il colore della forma.

Esempio

Nell'esempio che segue si disegna un'immagine bitmap e si riempiono tre ellissi che si sovrappongono all'immagine bitmap. Nella prima ellisse viene utilizzata una componente alfa pari a 255 e l'ellissi risulta pertanto opaca. Nella seconda e nella terza ellisse viene utilizzata una componente alfa pari a 128 e perciò le ellissi risultano semitrasparenti, ovvero attraverso le ellissi è possibile vedere l'immagine di sfondo. La chiamata con cui viene impostata la proprietà CompositingQuality consente di determinare la sfumatura della terza ellisse in combinazione con la correzione di gamma.

Nell''immagine che segue viene illustrato l'output del codice seguente.

![Opaco e semitrasparente](images)

Dim bitmap As New Bitmap("Texture1.jpg")
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height)

Dim opaqueBrush As New SolidBrush(Color.FromArgb(255, 0, 0, 255))
Dim semiTransBrush As New SolidBrush(Color.FromArgb(128, 0, 0, 255))

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30)
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30)

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30)

Bitmap bitmap = new Bitmap("Texture1.jpg");
e.Graphics.DrawImage(bitmap, 50, 50, bitmap.Width, bitmap.Height);

SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

e.Graphics.FillEllipse(opaqueBrush, 35, 45, 45, 30);
e.Graphics.FillEllipse(semiTransBrush, 86, 45, 45, 30);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.FillEllipse(semiTransBrush, 40, 90, 86, 30);

Compilazione del codice

L'esempio riportato in precedenza è stato creato per essere utilizzato con Windows Form e richiede PaintEventArgse un parametro di PaintEventHandler.

Vedere anche

Attività

Procedura: assegnare uno sfondo trasparente al controllo

Procedura: disegnare linee opache e semitrasparenti

Procedura: creare Windows Form trasparenti

Altre risorse

Grafica e disegno in Windows Form

Linee e riempimenti con fusione alfa