Невозможно получить градиент прозрачной границы для правильного отображения - PullRequest
0 голосов
/ 12 ноября 2010

У меня проблемы с отображением фонового изображения формы с прозрачностью градиента.То есть край изображения (или где-либо еще в этом отношении) имеет альфа-значение замирания или не 255.В результате везде, где альфа НЕ 255 (или 0 - я не помню), я вижу свой фоновый цвет.Вот снимок экрана :

В этой настройке у меня есть 24-битный bmp-файл с зеленым фоном, который я пытаюсь выделить с помощью свойства Form.TransparencyKey:

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    Color key = ((Bitmap)this.BackgroundImage).GetPixel(0, 0);
    this.TransparencyKey = key;
}

Я также пытался установить для свойства формы BackColor то же значение ключа, но это не имело значения.

Я также попытался сохранить изображение в формате png с прозрачностью и отключитьвесь фон формы, но это тоже не сработало.

Я знаю, что это как-то возможно, я видел такие приложения, как Photoshop, которые использовали это в течение десятилетия.Я нахожусь на WinXP Pro, если это имеет значение.

Кто-нибудь имеет опыт работы с этим и знает, какой шаг я пропускаю или делаю неправильно?

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Реализация WinForms Form позволяет использовать только сплошной цвет в качестве ключа прозрачности.Невозможно иметь различные уровни прозрачности.

Большинство приложений с такими заставками, как ваш, делают снимок экрана рабочего стола (в пределах, занимаемых их заставкой ), а затем объединяют ихзаставка в верхней части этого скриншота.Затем они отображают полученное растровое изображение пользователю, создавая впечатление альфа-градиента.

1 голос
/ 12 ноября 2010

У меня была своя доля времени провала именно с этим.
Я обнаружил, что WinForms просто слаб в обращении с этим.
Вот некоторые решения, которые могут оказаться полезными:
http://www.c -sharpcorner.com / UploadFile / scottlysle / XparentFormsCS10282007212944PM / XparentFormsCS.aspx http://blogs.msdn.com/b/mswanson/archive/2005/07/07/436618.aspx
http://www.vcskicks.com/splash-screen.php

...