如何从C#中的WinForm.Opacity中排除控件

时间:2012-10-30 08:20:52

标签: c# .net winforms

我有一个表单,我将它的不透明度设置为50%,如下所示:

this.Opacity = 0.5D; <--this==Form

我的问题是表单上的所有内容都是不透明度为50%

我在表单上有两个按钮,我希望它们没有不透明度。

我知道this.Opacity包含了所有控件,并且出于某种原因也包含了图形

我的问题是,如何排除控件的不透明度?

示例图片: example 2

谢谢!

2 个答案:

答案 0 :(得分:5)

由于Control没有Opacity属性,而且大多数控件都不支持透明色,因此可以使用以下方法:

  1. 创建名为Form的{​​{1}}并放置您要排除的所有控件。

    1.1将MainForm的{​​{1}}和BackColor属性设置为相同的颜色,例如TransparencyKey

  2. 创建另一个名为MainForm的表单,并放置必须变为透明的所有控件。将Color.Red属性设置为TransparentForm

  3. ShowInTaskbar False事件中显示MainForm并将其发回。

    Load

    enter image description here

  4. 两种形式的控件的位置必须是这样的,当组合时,它显示正确的用户界面。

答案 1 :(得分:-1)

创建一个C#项目并添加3个名为

的表单
  1. MAIN
  2. BACKGOUND
  3. 并为&#34; MAIN&#34;添加以下代码表单加载事件;

    private void MAIN_Load(object sender, EventArgs e)
    {
         Child frm1 = new  Child();
         BACKGOUND frm2 = new BACKGOUND();
         frm2 .WindowState = System.Windows.Forms.FormWindowState.Maximized;      
    
         frm2.Opacity = 0.5;
         frm2.Show();
    
         frm1.ShowDialog();
         frm2.Close();
    }