Nel precedente post abbiamo visto come disegnare un'immagine semitrasparente.
Adesso vediamo come rendere traparente un solo colore di un'immagine, così da poter vedere nitidamente due soggetti sovrapposti.
La cosa è estremamente semplice perchè viene eseguita direttamente dal metodo MakeTrasparent della Classe System.Drawing.Bitmap.
' VB.
Private Sub lblColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles lblColor.Click
If Me.ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.lblColor.BackColor = Me.ColorDialog1.Color
' Carica l'immagine di sfondo.
Dim img1 As Image = Image.FromFile("C:\Dnw.png")
' Carica l'immagine in primo piano.
Dim img2 As New Bitmap("C:\Net.png")
' Imposta il colore trasparente.
img2.MakeTransparent(Me.lblColor.BackColor)
' Disegna l'immagine.
Dim gr As Graphics = Me.Panel3.CreateGraphics
gr.DrawImage(img1, 0, 0)
gr.DrawImage(img2, 0, 0)
gr.Dispose()
End If
End Sub
// C#.
private void // lblColor_Click(object sender, System.EventArgs e)
{
if (this.ColorDialog1.ShowDialog == Windows.Forms.DialogResult.OK) {
this.lblColor.BackColor = this.ColorDialog1.Color;
// Carica l'immagine di sfondo.
Image img1 = Image.FromFile("C:\\Dnw.png");
// Carica l'immagine in primo piano.
Bitmap img2 = new Bitmap("C:\\Net.png");
// Imposta il colore trasparente.
img2.MakeTransparent(this.lblColor.BackColor);
// Disegna l'immagine.
Graphics gr = this.Panel3.CreateGraphics;
gr.DrawImage(img1, 0, 0);
gr.DrawImage(img2, 0, 0);
gr.Dispose();
}
}
Ovviamente il risultato finale dipenderà dalla qualità e dall'eventuale antialiasing dell'immagine in primo piano.