如何清除透明面板?

时间:2012-10-18 15:18:22

标签: panel transparent ws-ex-transparent

我制作了一个像这样的透明面板(在C#中):

public class TransparentPanel : Panel
{
    public TransparentPanel()
    {
    }

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams createParams = base.CreateParams;
            createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT
            return createParams;
        }
    }

    protected override void OnPaintBackground(PaintEventArgs e)
    {
        // Do not paint background.
    }
}

它显示在普通面板上。我想绘制一个圆圈来显示其他面板中的某些内容,所以我在透明的OnPaint方法上绘制了我的圆圈。然后,我想展示别的东西,所以我需要这个圆圈在其他地方“移动”。

但我不能。

我在这里找到的解决方案都没有为我工作,尽管我在OnPaint方法中绘制了这个圆圈。 我不使用事件的Graphics对象,因为如果我这样做,则根本不会显示任何内容。

所以,我必须使用它:

this.CreateGraphics()

我无法使用背景颜色在其上绘制另一个圆圈:我的背景需要保持透明。并使用Color.Transparent绘制一个圆圈不起作用。

清除透明面板会导致黑色背景替换透明面板。

指令

Graphics.Clear();

无法编译。

这也不是:

gr.Clear();

因为它需要Color参数。

而且:

gr.Clear(Color.transparent);

创建黑色背景。

对我来说,我已经尝试了我能想到的一切。

有什么想法吗?

0 个答案:

没有答案