C#使表单的背景透明(以半透明像素显示.png背景)

时间:2014-05-23 19:42:46

标签: c# winforms background visual-studio-2013

PNG图像有透明的部分,我希望这个图像作为我的表格的背景 我已将ControlStyles.SupportsTransparentBackColor设置为true并使用this.BackColor = Color.Transparent;但这根本不起作用,当我启动应用时,背面颜色显示为灰色。即使我在属性 - >外观中将 BackColor 设置为透明。我可以在表单设计预览中看到它是透明的,但是当我启动应用程序时它仍然显示为纯灰色 使用TransparencyKey也会给我带来不好的结果 - PNG图像的半透明像素变成了TransparencyKey颜色,我无法使用TransparencyKey的透明颜色。寻求帮助。
例: http://i.stack.imgur.com/u9p6N.jpg

1 个答案:

答案 0 :(得分:1)

您可能错误地使用TransparencyKey。此属性背后的想法是指定为TransparencyKey的颜色将是透明的。例如。如果你设置myForm.TransparencyKey = Color.Red任何红色的东西都是透明的。但是,如果红色的阴影与描述为Color.Red的阴影不同,则它将不透明。

或者,换句话说,它将产生透明的背景:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.BackColor = Color.FromArgb(100, 0, 0);
        this.TransparencyKey = Color.FromArgb(100, 0, 0);
    }
}

但这不透明:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.BackColor = Color.FromArgb(99, 0, 0);
        this.TransparencyKey = Color.FromArgb(100, 0, 0);
    }
}

现在,如果您的图像具有白色背景并且设置this.TransparencyKey = Color.White,则图像的白色部分将是透明的。但是如果有任何灰色的白色区域,你会看到这种颜色而不是透明的背景。

如果是这种情况,您可能需要编辑图像以确保背景无处不在。