【问题标题】:How to set transparency effects for backcolor property in vb.net [duplicate]如何在vb.net中为背景色属性设置透明度效果[重复]
【发布时间】:2021-11-04 05:34:44
【问题描述】:

我正在使用 Visual Studio 2019 中的 vb.net 开发桌面应用程序。有时我会要求用户选择他们想要创建的标签的背景颜色。在代码中一切正常,但是当用户选择半透明背景时,比如 ARGB (116,255,255,000),它会跳过 alpha 部分,这样我就得不到我想要的背景透明度。 我该如何解决这个问题?

这是用户选择标签属性的方式

这是处理它的部分代码

Str5 = "116255255000"   
Label1.BackColor = Color.FromArgb(Str5.Substring(0, 3), Str5.Substring(3, 3), Str5.Substring(6, 3), Str5.Substring(9, 3))

这是我得到的结果

【问题讨论】:

  • 该代码表明您有Option Strict Off,您应该立即进行补救。在项目属性中设置它On,它可能会标记许多您在数据类型上快速而松散的地方,从而降低您的代码效率并可能掩盖可能导致运行时崩溃的错误。您还应该在 VS 选项中将其设置为 On,以便将来所有项目默认为 On
  • 你可以拥有一个完全半透明/透明的控件,但是你必须自己处理透明度。一个例子:Translucent circular Control with text

标签: vb.net visual-studio winforms desktop-application opacity


【解决方案1】:

它完全按照它应该的方式工作。将BackgroundImage 添加到您的表单中,您会看到。

您的问题不在于BackColor 不透明,而是Windows 窗体仅支持一种捏造的透明形式。当控件是透明的时,您实际上看不到它。实际发生的是创建了它背后的父级图像,并显示在控件的背景中。但是,此图像中仅包含父级本身,而不是任何其他同级控件。如果你按照我的建议去做,那么你会看到这一点,因为你仍然会看到你希望看到其他控件的父级。

使用 WinForms 控件无法真正解决此问题。另一种方法是不使用Label,而是使用 GDI+ 绘制文本及其背景颜色。然后,您可以在表单和其他控件上进行绘图,您将能够看到您所期望的一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2018-04-13
    • 2011-10-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多