如何清除Windows窗体中透明控件上的图形

sni*_*ker 6 .net c# gdi+ transparent winforms

所以,我对Windows窗体开发很不熟悉.

我正在尝试创建一个"嘿,我正忙着做东西"的组件,只是旋转形状.我希望这个控件是瞬态的,并且可以在任何其他控件之上绘制.该类直接从Control继承.

所以我在构造函数中有这个:

SetStyle(ControlStyles.Opaque, true);
Run Code Online (Sandbox Code Playgroud)

还有这个:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams parms = base.CreateParams;
        parms.ExStyle |= 0x20; 
        return parms;
    }
}
Run Code Online (Sandbox Code Playgroud)

这让我获得了一个可以在其他控件之上绘制的控件.

现在我的问题是这个.我每秒重复几次控制,给动画一个平滑的动画.但是,我无法弄清楚如何清除前一帧中绘制的内容.使用e.Graphics.Clear(Color.Transparent)OnPaint原来整个控制黑色.

有没有办法清除控件的绘制内容?

我注意到调整控件大小会清除背景.

不起作用的事情

  1. 重写OnPaintBackground什么都不做.或者只是调用base.OnPaintBackground.结果相同.

sni*_*ker 4

好的,我在这里找到了解决方案: https://web.archive.org/web/20141227200000/http ://bobpowell.net/transcontrols.aspx

实际上必须使父控件无效才能保留透明背景。