C #: Form.DoubleBuffered = true убивает прозрачность - PullRequest
2 голосов
/ 08 сентября 2011
  1. Создание нового проекта форм Windows
  2. Установите для TransparancyKey & BackColor этой формы значение "Черный"
  3. Выполнить

=> Форма отображаетсяпрозрачный

Теперь также установите для свойства Form.DoubleBuffered значение true

=> Форма больше не отображается прозрачной

Почему это?Есть ли обходные пути для получения прозрачной формы с двойной буферизацией?

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Вам не нужно беспокоиться о свойствах 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 голосов
/ 08 сентября 2011

Я только что попытался повторить ваши шаги, и у меня все работает нормально. Возможно, это версия .Net / версия ОС / какая-то графическая проблема.

Для справки я тестирую с ...

  • VS 2010
  • Windows 7 (32 бита)
  • .Net 4
...