我制作了一个像这样的透明面板(在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);
创建黑色背景。
对我来说,我已经尝试了我能想到的一切。
有什么想法吗?