我创建了一个透明的面板。
public TransPanel()
{
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x00000020;
return cp;
}
}
protected override void OnPaint(PaintEventArgs e)
{
if (ImageForBackGround != null)
{
e.Graphics.DrawImage(ImageForBackGround, new Point(0, 0));
}
}
它工作正常,但我有问题,如果我做一个.Refresh();控件不再透明。或者.Invalidate();.然后控件与他的父母颜色相同。 我已经尝试覆盖BackgroundOnPaint-Event,但它不起作用。
protected override void OnPaintBackground(PaintEventArgs pevent)
{
Application.DoEvents();
}
有人能帮助我吗?提前谢谢。
答案 0 :(得分:0)
我现在找到了解决方案。只需将Opaque设置为true即可。
protected override void OnPaint(PaintEventArgs e)
{
if (ImageForBackGround != null)
{
e.Graphics.DrawImage(ImageForBackGround, new Point(0, 0));
this.SetStyle(ControlStyles.Opaque, true);
}
}