【问题标题】:vb.net panel 1 transparent colorvb.net面板1透明色
【发布时间】:2021-06-17 02:16:33
【问题描述】:

如何在 vb.net 中透明面板?面板的默认颜色是白色

Private Sub frm_console_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'Panel1.BackColor = Color.Transparent //i've tried this too
     Panel1.BackColor = Color.FromArgb(25, Color.Black)

End Sub

【问题讨论】:

  • WinForms 不支持这样的透明度。您可以伪造完全透明,但不支持部分透明。如果这是您想要的,请使用 WPF。它是从头开始创建的,以支持透明度等现代功能。
  • 我怎样才能假装完全透明?
  • 看来我错了。我刚刚尝试将PanelBackColor 设置为部分透明的颜色,并且效果很好。我所做的几乎和你所做的一样,并且按预期/期望的方式工作。试试这些步骤。创建一个新的 WinForms 项目并设置表单的BackgroundImage 属性。在表单中添加三个Panels,并将BaclColor分别设置为RedRedTransparent。在Load 事件处理程序中添加Panel2.BackColor = Color.FromArgb(100, Panel2.BackColor)。你应该在Panels这三个中看到全红、透明红和完全透明。
  • 请注意,这仍然不是“真正的”透明度。发生的情况是控件在其背景中绘制其父级,因此它看起来是透明的。如果您在透明控件后面放置另一个控件,您将看不到它,但仍会看到父控件。这就是我所说的“虚假透明度”。
  • Transparent image over two controls with different back colors Translucent circular Control with text: C#,但如果你不会说这种语言,你可以制作一个自定义控件并在 VB.Net 中使用它。 -- 您可以在窗体上重叠任何其他控件,透明度被保留。您只需要避免重叠的可滚动控件。除非你稍微调整一下。

标签: vb.net


【解决方案1】:

我最初没有查看您的屏幕截图,但现在我发现您的问题正是我所说的,即 WinForms 不支持真正的透明度。它支持“假”透明度,因为具有透明BackColor 的控件将在其自己的背景中绘制其父级,以使其看起来您可以看穿它。虽然它只绘制父级,所以任何部分被遮挡的兄弟控件,例如截图中的Buttons 不会显示出来。

您对此无能为力,因为这正是 WinForms 的工作方式。如果您想要真正的透明度,那么您需要改用 WPF,它是从头开始构建的,以支持透明度等现代功能。

【讨论】:

  • 我必须寄回去吗?
  • @MayYie,如果您想将Panel 发送到 z 顺序的后面,请继续,但这与透明度无关。读我的嘴唇:Windows 窗体不支持透明度。不管你想要多少或问多少问题。 WinForms 仍然不支持透明度。如果您想要透明度,请停止使用 WinForms 并改用 WPF。如果你想坚持使用 WinForms,那么你需要放弃 WinForms 实际支持的虚假透明度之外的透明度。
猜你喜欢
  • 1970-01-01
  • 2011-04-16
  • 2010-09-20
  • 2014-09-11
  • 2015-07-08
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多