public partial class tspControl : UserControl
{
public tspControl()
{
InitializeComponent();
SetStyle(ControlStyles.SupportsTransparentBackColor
| ControlStyles.UserPaint
| ControlStyles.AllPaintingInWmPaint
| ControlStyles.Opaque, true);
this.BackColor = Color.Transparent;
}
private Image img;
public Image Image
{
get
{
return img;
}
set
{
img = value;
}
}
protected override void OnLocationChanged(EventArgs e)
{
//base.OnLocationChanged(e);
Visible = false;
Visible = true;
}
protected override CreateParams CreateParams
{
get
{
//return base.CreateParams;
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
return cp;
}
}
protected override void OnPaint(PaintEventArgs pe)
{
if (img != null)
{
base.OnPaint(pe);
pe.Graphics.DrawImage(img, 0, 0);
}
else
{
}
}
}
//注:如果是手动改变图片,最好在刷新一下界面(this.Refresh();),记着图片要是透明的才能实现透明
把上面的控件添加到窗体上,下面的方法是改为这个控件上和图片使图片的Color.White透明,如果控件上的Image为NULL,则全透明,
private void btn_OpenImg_Click(object sender, EventArgs e)
{
OpenFileDialog opf = new OpenFileDialog();
if (opf.ShowDialog() == DialogResult.OK)
{
Bitmap bit=new Bitmap(opf.FileName);
bit.MakeTransparent(Color.White);
tspControl1.Image = bit;
this.Refresh();
}
}