Procedura: disegnare linee opache e semitrasparenti

Quando si disegna una linea è necessario passare un oggetto Pen al metodo DrawLine della classe Graphics. Uno dei parametri del costruttore Pen è un oggetto Color. Per disegnare una linea opaca, impostare la componente alfa del colore su 255. Per disegnare una linea semitrasparente, impostare la componente alfa su un valore qualsiasi compreso tra 1 e 254.

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

Esempio

Nell'esempio che segue viene disegnata un'immagine bitmap e quindi tre linee nelle quali si utilizza l'immagine bitmap come sfondo. Nella prima linea viene utilizzata una componente alfa pari a 255 e la linea risulta pertanto opaca. Nella seconda e nella terza linea viene utilizzata una componente alfa pari a 128 e le linee risultano perciò semitrasparenti, ovvero attraverso le linee è possibile vedere l'immagine di sfondo. L'istruzione con cui viene impostata la proprietà CompositingQuality consente di determinare la sfumatura della terza linea in combinazione con la correzione gamma.

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

Opaco e semitrasparente

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

        Dim opaquePen As New Pen(Color.FromArgb(255, 0, 0, 255), 15)
        Dim semiTransPen As New Pen(Color.FromArgb(128, 0, 0, 255), 15)

        e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20)
        e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40)

        e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected
        e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60)

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

Pen opaquePen = new Pen(Color.FromArgb(255, 0, 0, 255), 15);
Pen semiTransPen = new Pen(Color.FromArgb(128, 0, 0, 255), 15);

e.Graphics.DrawLine(opaquePen, 0, 20, 100, 20);
e.Graphics.DrawLine(semiTransPen, 0, 40, 100, 40);

e.Graphics.CompositingQuality = CompositingQuality.GammaCorrected;
e.Graphics.DrawLine(semiTransPen, 0, 60, 100, 60);

Compilazione del codice

L'esempio riportato in precedenza è stato creato per essere utilizzato con Windows Form e richiede PaintEventArgs e, un parametro del gestore eventi Paint.

Vedere anche

Attività

Procedura: assegnare uno sfondo trasparente al controllo

Procedura: creare Windows Form trasparenti

Procedura: disegnare con pennelli opachi e semitrasparenti

Altre risorse

Linee e riempimenti con fusione alfa