C# - 透明表单

Posted

技术标签:

【中文标题】C# - 透明表单【英文标题】:C# - Transparent Form 【发布时间】:2011-05-17 21:15:04 【问题描述】:

我目前有一个表单,除了一个之外,它具有所有所需的效果。当前表单由顶部的菜单条和下方的面板组成,面板下方包含标签和图片框。当表单启动时,菜单条不可见,只有在用户按下“Alt”按钮时才可见,并以相同的方式消失。

面板将有一个带有透明背景 (.PNG) 的背景图像。当我将borderstyle设置为none时,该图像将成为表单的主要布局。现在的问题是表单在面板下方仍然有白色/灰色背景。

现在我的问题是如何使表单透明,以便面板上的图像成为主要布局,而不仅仅是其下方带有表单背景色的图像。我不想使用 Opacity 属性,因为我希望面板 100% 可见。

【问题讨论】:

【参考方案1】:

假设 WinForms。

您可以这样做,但您不能使边缘半透明。

试试这个。

在表单上,​​设置以下属性:

BackColor = Color.Lime;
TransparencyKey = Color.Lime;

这将使表单透明。然后设置背景图片:

BackgroundImage = myImage:

同样为Color.Lime的背景图像部分也会变得透明。

如果您还想去掉 Forms 边框,也可以添加这一行:

FormBorderStyle = FormBorderStyle.None;

【讨论】:

这成功了!感谢您的快速回复和详细解释。我不敢相信它是这么简单!再次感谢。 很高兴我能帮上忙。当我为应用程序制作启动画面时,我也做过同样的事情。 谢谢,它运作良好。一个问题,我注意到如果我使用拉绳将一些文本绘制到透明表单上的透明标签上,文本周围会有一个石灰(或用作 TransparencyKey 的任何颜色)锯齿。你知道怎么解决吗?【参考方案2】:

选择背景颜色时要小心。选择与您的文本、图像和任何控件的颜色不同的背景色,这意味着选择一种您永远不会在表单中使用的颜色,我认为紫红色/石灰将是最佳选择。选择背景色代码如下:

this.BackColor = Color.Fuchsia;

然后使用该代码将该颜色设置为透明:

TransparencyKey = Color.Fuchsia;

【讨论】:

为什么要选择你永远不会使用的颜色? 因为如果您确实在其他地方使用了该颜色,并且您已将其设置为TransparencyKey,那么它也将变为透明。有点像天气预报员在绿屏前穿着亮绿色西装。 是的,因为当您将使用在表单中使用的颜色时,我们将透明一种颜色,然后该文本或图像也将是透明的 你也可以使用表单属性而不是我猜的代码。

以上是关于C# - 透明表单的主要内容,如果未能解决你的问题,请参考以下文章

在透明表单内设置表单的不透明度

在 XP 上,如何让工具提示出现在半透明表单上方?

打开表单时更改窗口不透明度

c# Form.Hide() 与 Form.Opacity = 0

iPad上的模态表单在Swift中透明?

在自动完成表单上将输入背景更改为透明