2011-09-08 50 views
2
  1. 创建一个新的Windows窗体项目
  2. 设置TransparancyKey这种形式的&背景色为 “黑”
  3. 运行

=>表所示透明C#:Form.DoubleBuffered =真杀死transparancy

现在还设置 Form.DoubleBuffered属性为true

=>窗体不再显示透明

为什么这样? 获取双缓冲透明表单的任何解决方法?

+0

双缓冲肯定杀死其他的方式来实现透明。只是不TransparencyKey。 –

回答

1

您不需要担心透明度和双缓冲工作的TransparencyKey和BackColor属性。将它们保留为默认值并再次尝试。然后,如果你真的想要你的背景颜色为黑色,请尝试应用该值。

下面的代码片段产生在我的机器上的%50透明窗口:

using System; 
using System.Drawing; 
using System.Windows.Forms; 

public partial class Form1 : Form { 
    public Form1() { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) { 
     DoubleBuffered = true; 
     AllowTransparency = true; 
     BackColor = Color.Black; 
     Opacity = .5; 
    } 
} 
+0

该代码也能在我的机器上正常工作。 – icaptan

+0

不透明度不能代替透明度。 –

+0

好吧,所以我在做的细节:窗体有一个PNG图像背景,其中包含一些透明的部分。这就是为什么我使用TransparencyKey和BackColor的原因,因为这使得表单在背景png图像透明的区域是透明的。但只要我设置DoubleBuffered = true,这不起作用了。 – nr1

0

我刚才试了一下你的步骤进行复制,它是对我工作的罚款。也许这是某种.Net版本/操作系统版本/ Graphsics问题。

仅供参考我与测试...

  • VS 2010
  • 的Windows 7(32位)
  • .NET 4中
+0

好吧,所以我在做的细节:窗体有一个PNG图像背景,其中包含一些透明的部分。这就是为什么我使用TransparencyKey和BackColor的原因,因为这使得表单在背景png图像透明的区域是透明的。但只要我设置DoubleBuffered = true,这不起作用了。我有VS2010 Express,Win XP – nr1

+0

@ nr1,我想说的问题是如何设置背景图片。也许值得尝试在窗体OnPaint事件上绘制自己的图像(或使用填充表单的面板,我可能会选择此选项) – musefan