我做了一个这样的透明面板(在 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);
创建黑色背景。
在我看来,我已经尝试了我能想到的一切。
任何想法 ?