所以,我很不熟悉windows窗体开发。如何清除窗体中透明控件上的图形
我试图创建一个“嘿,我忙于做东西”组件,只是旋转一个形状。我想这个控件是暂时的,并且在任何其他控件的顶部。该类直接从Control继承。
所以我有这样的构造:
SetStyle(ControlStyles.Opaque, true);
这:
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20;
return parms;
}
}
它得到我,将借鉴其他控件的顶部的控制。
现在我的问题是这样的。我每秒钟重画控制几次,给予平稳动画的外观。但是,我无法弄清楚如何清除前一帧中绘制的内容。使用OnPaint
中的e.Graphics.Clear(Color.Transparent)
将整个控件变成黑色。
有没有办法清除控件的绘制内容?
我注意到调整控件大小将清除背景。
事情,不工作
- 重写OnPaintBackground什么也不做。或者只需调用base.OnPaintBackground。相同的结果。
您不必使整个父控件无效,而只是对应于用户控件的区域:this.Parent.Invalidate(this.ClientRectangle,true); – 2010-04-12 00:39:59
@Eric:谢谢你的提示。我想我可能已经做到了! – snicker 2010-04-12 15:13:46
除非用户控件位于位置(0,0),否则这将无法正常工作。您必须使usercontrol覆盖的父区域失效并使用父坐标。另外,如果usercontrol具有透明的非客户区域,则该区域也不会失效。我会去'this.Parent.Invalidate(new Rectangle(this.Location,this.Size),true);' – takrl 2011-04-21 09:23:55