所以,我对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)将整个控件变为黑色。

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

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

不起作用的事

  1. 覆盖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时,您可能还需要使控件无效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top