C # Сделать фон формы прозрачным (для отображения фона .png с полупрозрачными пикселями)

1

Изображение PNG имеет прозрачные части, и я хочу, чтобы это изображение было фоном для моей формы.
Я установил ControlStyles.SupportsTransparentBackColor в true и использовал this.BackColor = Color.Transparent; но это просто не работает вообще, задний цвет кажется сплошным серым, когда я запускаю приложение. Даже если я установил BackColor в Transparent в Properties-> Appearence. Я вижу это Прозрачно в предварительном просмотре формы, но он все еще кажется сплошным серым, когда я запускаю приложение.
Игра с TransparencyKey также дает мне плохие результаты - полупрозрачные пиксели изображения PNG стали цветными с цветом TransparencyKey и я не могу использовать прозрачный цвет для TransparencyKey. Ищите какую-то помощь.
ПРИМЕР: http://i.stack.imgur.com/u9p6N.jpg

Теги:
winforms
background
visual-studio-2013

1 ответ

1

Вы можете использовать TransparencyKey неправильно. Идея этого свойства заключается в том, что цвет, указанный как TransparencyKey будет прозрачным. Например, если вы установите myForm.TransparencyKey = Color.Red все, что красное, будет прозрачным. Однако, если красный оттенок отличается от цвета, указанного в Color.Red он не будет прозрачным.

Или, иначе говоря, это приведет к прозрачному фону:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.BackColor = Color.FromArgb(100, 0, 0);
        this.TransparencyKey = Color.FromArgb(100, 0, 0);
    }
}

Но это не будет прозрачно:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.BackColor = Color.FromArgb(99, 0, 0);
        this.TransparencyKey = Color.FromArgb(100, 0, 0);
    }
}

Итак, теперь, если ваше изображение имеет белый фон, и вы устанавливаете this.TransparencyKey = Color.White только белые части изображения будут прозрачными. Но если есть какие-то сероватые, белые области, вы увидите этот цвет вместо прозрачного фона.

В этом случае вам может потребоваться отредактировать изображение, чтобы убедиться, что фон имеет один и тот же цвет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню