【问题标题】:Changing form opactity without changing opacity of contained controls更改表单不透明度而不更改容器控件的不透明度
【发布时间】:2008-10-07 15:05:20
【问题描述】:

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

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

【问题讨论】:

  • 不透明度无法做到这一点。如果只需要 0%,则可以使用 TransparencyKey 属性。
  • 非常感谢您,先生,我做到了:)

标签: .net winforms


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    Form.TransparencyKey Property

    当为 TransparencyKey 属性分配颜色时,具有相同背景颜色的表单区域将透明显示。

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

    【讨论】:

      【解决方案3】:

      很遗憾,OpacityForm 的属性,而不是 Control。我能想象这可能的唯一方法是,如果您自己自定义绘制表单并在用于绘制表单背景的画笔中使用 alpha 组件。

      即使那样,我也不认为它会起作用,因为桌面组合管理器(尤其是在 Windows Vista 上相关)需要知道您的表单应该如何与桌面的其余部分组合,我认为画笔会仅对表单背景透明,而不是在其下方。

      【讨论】:

        猜你喜欢
        • 2012-09-20
        • 1970-01-01
        • 2013-03-04
        • 2010-12-05
        • 1970-01-01
        • 2011-03-27
        • 2016-10-19
        • 2016-12-02
        • 1970-01-01
        相关资源
        最近更新 更多