如何清除Windows窗体中透明控件上的图形
-
05-07-2019 - |
题
所以,我对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。相同的结果。 醇>
解决方案
好的,我在这里找到了解决方案: http://www.bobpowell.net/transcontrols.htm
实际上,父控件必须无效才能保留透明背景。
其他提示
您可能必须覆盖本文提供的OnPaintBackground: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html
当需要清除控件以强制调用OnPaintBackground时,您可能还需要使控件无效。
不隶属于 StackOverflow