C#:Form.DoubleBuffered=true会杀死透明性

本文关键字:透明性 true Form DoubleBuffered | 更新日期: 2023-09-27 18:08:05

  1. 创建新的windows窗体项目
  2. 设置TransparancyKey&此表单的背景色为"黑色">
  3. Run

=>表单显示为透明

现在还设置将.DoubleBuffered属性设置为真正的

=>表单不再显示为透明

为什么这样?有没有获得双缓冲透明表单的解决方案?

C#:Form.DoubleBuffered=true会杀死透明性

您不需要担心透明度和双缓冲的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;
    }
}

我刚刚尝试了您的复制步骤,它对我来说很好。也许这是.Net版本/OS版本/Graphics的某种问题。

作为参考,我正在测试。。。

  • 与2010年相比
  • Windows 7(32位(
  • .Net 4