1
我了这样的透明面板(在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();
,因为它需要一个颜色参数。
这:
gr.Clear(Color.transparent);
创建了一个黑色的背景。
对我来说似乎我已经尝试过所有我能想到的东西。
有什么想法?