Creazione di 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 di 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.

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 in cui viene impostata la proprietà CompositingQuality consente di determinare la sfumatura della terza linea in combinazione con la correzione di gamma.

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)
[C#]
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);

Nell'illustrazione che segue si mostra l'output del codice precedente.