如何将不可见的背景应用于面板上的控件? (C#)

时间:2019-03-21 10:36:51

标签: c#

TransparencyKey在应用于面板上的控件时不起作用,该面板的不可见背景正在起作用。

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

button1是panel1上的Control。 button1仍保留其原始背景色(30,30,30)

1 个答案:

答案 0 :(得分:1)

根据Color.FromArgb的文档,您当前正在使用“ RGB”重载调用该方法-您指定的值仅填充颜色的“ RGB”部分,而忽略了“ A”或“ alpha”部分。您需要使用接受四个参数的重载:

button1.BackColor = Color.FromArgb(0, 0, 0, 1);

开始时请注意0-这是alpha属性,将其设置为0可使颜色透明。线索位于方法名称“ ARGB”中,它表示指定参数的顺序。

来自MS Docs:

  

FromArgb(Int32, Int32, Int32, Int32)

     

根据四个ARGB分量(alpha,红色,   绿色和蓝色)值。尽管此方法允许使用32位值   传递给每个组件,每个组件的值是有限的   到8位。