更改表单不透明度而不更改容器控件的不透明度

时间:2008-10-07 15:05:20

标签: .net winforms

是否可以在.NET中使用Windows Forms来更改表单的不透明度,而不会自动更改表单中控件的不透明度?

我有一个运行最大化的表单,它在表单中心包含一个flowlayoutpanel,里面有控件。我想降低表单的不透明度,以便flowlayoutpanel周围的“备用”部分部分透明,但flowlayoutpanel本身保持稳定(我的目标是lightbox样式效果)。

3 个答案:

答案 0 :(得分:2)

当然,通过将窗体的背景设置为透明(而不是将不透明度设置为0,这基本上设置了前景和背景的透明度),可以在WPF中实现这一点。

如果你真的想,我不明白为什么你不能使用WindowsFormsHost将winforms组件嵌入到透明的wpf表单中。

答案 1 :(得分:1)

Form.TransparencyKey Property

为TransparencyKey属性指定Color时,将以透明方式显示具有相同BackColor的表单区域。

如果分配给TransparencyKey属性的颜色与表单上的任何控件相同,它们也将以透明方式显示。例如,如果窗体上的Button控件的TransparencyKey属性设置为SystemColors.Control,则控件将以透明方式显示,除非Button控件的BackColor属性更改为其他颜色。

答案 2 :(得分:0)

不幸的是,OpacityForm的属性,而不是Control。我可以想象的唯一方法就是如果你自定义绘制表单并在用于绘制表单背景的画笔中使用alpha组件。

即便如此,我认为它不会起作用,因为桌面组合管理器(特别是在Windows Vista上相关)需要知道你的表单应该如何与桌面的其余部分组合,我认为刷子会只对表格背景透明,而不是对其下面的任何内容。