3

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

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

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

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

我知道这this.Opacity包括所有控件,出于某种原因,图形也包括在内

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

示例图像: 示例 2

谢谢!

4

2 回答 2

5

由于Control没有Opacity属性,而且大多数控件不支持透明颜色,所以一个可行的解决方案可以是:

  1. 创建一个Form调用MainForm并放置您将被排除的所有控件。

    1.1 将 ofBackColor和的TransparencyKey属性设置MainForm为相同的颜色,例如Color.Red

  2. 创建另一个名为的窗体TransparentForm并放置所有必须变为透明的控件。将ShowInTaskbar属性设置为False

  3. MainForm Load事件中显示TransparentForm并将其发送回。

    private void MainForm_Load(object sender, EventArgs e)
    {
        TransparentForm form = new TransparentForm();
        form.Opacity = 0.5D;
        form.Show();
        form.SendToBack(); 
    }
    

    在此处输入图像描述

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

于 2012-10-30T09:36:16.173 回答
-1

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

  1. 主要的
  2. 背景
  3. 孩子

并为“MAIN”表单加载事件添加以下代码;

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();
}
于 2015-11-01T15:52:46.890 回答