透明背景的窗体
本文关键字:窗体 背景 透明 | 更新日期: 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
以及用户绘画风格。