透明背景的窗体

本文关键字:窗体 背景 透明 | 更新日期: 2023-09-27 18:00:39

我想将窗体的背景色设置为透明。我知道通过设置TransparencyKey可以做到这一点,但这对我来说不起作用,因为我在表单上呈现了一个具有不同alpha值的图像。我试图覆盖OnPaintBackground方法,但后来我得到了一个黑色背景。有没有更好的方法来设置窗体的背景透明度?

透明背景的窗体

这是不可行的,透明的颜色会让背景发光。但是表单的背景本身并没有背景。您将看到创建窗口时,视频适配器的帧缓冲区中的像素初始化为什么。通常为白色,如果使用"不透明度"或"透明度关键帧"属性,则在某些机器上会为黑色。

要在窗户上打一个洞,这样你就可以看到后面的任何窗户,你必须使用分层窗户。视频适配器本身将帧缓冲区中的像素与窗口的像素组合在一起,存储在单独的覆盖中。你在电视上看到的天气预报员站在天气图前的那种效果,叫做颜色键控。

只需将窗体的BackColor设置为与TransparencyKey属性相同的值,这很简单。选择一种"不寻常"的颜色,不会出现在窗口的其他地方,颜色。紫红色是一种很好的岩藻色。

不要设置TransparencyKey。设置不透明度:

this.Opacity = 0.5d;

注意:这使得整个窗口(半)透明,包括它的边框和标题!如果您将其设置为0.0d,它将完全不可见!

您仍然需要绘制背景以使其透明(或者您会看到黑色背景)。

protected override void OnPaintBackground(PaintEventArgs e)
{
    using (SolidBrush brush = new SolidBrush(this.TransparencyKey))
        e.Graphics.FillRectangle(brush, ClientRectangle);
}

不要忘记设置透明度键和反彩色

TransparencyKey = BackColor = Color.LavenderBlush; // to example

以及用户绘画风格。