2010-11-12 2 views
0

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

То, что я в этой установки является 24bit 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, если это имеет значение.

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

ответ

1

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

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

+0

Это умное решение проблемы. Если я не смогу вытащить приемлемый взгляд с каплей, я думаю, что поеду на экран. Мне все равно нужна функциональность экранной крышки, поэтому я мог бы туда попасть и узнать об этом. Спасибо за информацию. –

1

У меня была своя доля неудачного времени именно с этим.
Я обнаружил, что 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

+0

Одна из этих статей дала мне представление о том, что я могу, возможно, просто использовать тень для подделывания эффекта, которым я подвергаюсь. Благодарю. –

Смежные вопросы