有没有办法让面板透明或半透明?我没有找到任何适当的属性来设置面板的透明度。
我还尝试使用网格进行WPF控制(网格背景和控件背景设置为透明)并将其放在普通的Windows窗体上,但是当我将此控件放在正常的Windows窗体(不是WPF)上时,我不会获得适当的透明度。
答案 0 :(得分:2)
如果您的显示非常静态,可以执行此操作以实现半透明(Source):
class SeeThroughPanel : Panel
{
public SeeThroughPanel()
{
}
protected override CreateParams CreateParams {
get {
var cp = base.CreateParams;
cp.ExStyle |= 0x00000020;
return cp;
}
}
protected override void OnPaint(PaintEventArgs e)
{
//base.OnPaint(e);
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(50, 0, 0, 0)), this.ClientRectangle);
}
}
但是,如果您需要在半透明控件上进行动态渲染,这种方法并非没有问题。请参阅我发布的this个问题。希望有一天能得到答案。
答案 1 :(得分:1)
不幸的是,WinForms本身或支持透明度并且很难自己实现。
如果您想要一个透明的面板,可以让您“看到”表单,请查看at this article,告诉您将Panel的TransparencyKey
和BackColor
设置为某个内容比如Fuscia
。使用面板中的文本/其他内容,此效果可能看起来不太好。
如果您想要一个显示以下表格的透明或半透明面板,请查看at this SO question。
如果您现在可以在表单中使用它,我会一直使用WPF。
答案 2 :(得分:0)
我不确定将面板设置为半透明,但我知道您可以使用表单的TransparencyKey
属性来创建完全透明的部分。
例如,将表单的TransparencyKey
属性设置为Fuchsia,然后将面板的BackColor
设置为Fuchsia,它将在表单上创建一个透明区域。
修改强>
同意@Callum Rogers关于使用WPF的问题。面板上的文字直接显示边缘(请参见屏幕截图中的标签)。但是,如果您需要将其快速添加到现有的Win Forms应用程序中,并且不需要直接在面板上显示文本,那么它可能适合您。