Лучший отвечающий
C# TransparencyKey в Windows XP

Вопрос
-
В свойствах формы указал:
FormBorderStyle выставил в None.
В BackgroundImage установил рисунок с черным фоном.
TransparencyKey выставил Black.
Делал под .Net Framework 4.0
Когда запустил под Windows 7, то все впорядке, черный стал прозрачным. И форма приобрела нужные очертания (согласно рисунку).
А вот, когда запустил под Windows XP (предварительно установив полный .Net Framework 4.0), то у формы черный остался черным. Отображается рисунок на фоне черного прямоугольника.
Что сделать, что бы под ХР заработало свойство TransparencyKey и форма стала прозрачной для заданного цвета?
16 июня 2012 г. 17:42
Ответы
-
пока нашел вот:
Per Pixel Alpha Blend in C# - 2004
Есть более современные решения данной проблемы?
P.S. вот описание бага:
Т.е. если убрать 32 разряда глубину цвета на мониторе, то все работает. Но, ради одной моей программы менять на 24 или 16 разрядов цвет монитора, это расточительно )
- Изменено sg6336 16 июня 2012 г. 18:34
- Помечено в качестве ответа Abolmasov Dmitry 22 июня 2012 г. 11:32
16 июня 2012 г. 18:13
Все ответы
-
пока нашел вот:
Per Pixel Alpha Blend in C# - 2004
Есть более современные решения данной проблемы?
P.S. вот описание бага:
Т.е. если убрать 32 разряда глубину цвета на мониторе, то все работает. Но, ради одной моей программы менять на 24 или 16 разрядов цвет монитора, это расточительно )
- Изменено sg6336 16 июня 2012 г. 18:34
- Помечено в качестве ответа Abolmasov Dmitry 22 июня 2012 г. 11:32
16 июня 2012 г. 18:13 -
Ну по второй ссылке в самом низу есть же решение проблемы. То есть вам программно нужно узнать цвет в той точке где вы точнознаете, что там черный и установить его в качестве TransparencyKey
Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!
17 июня 2012 г. 5:26Отвечающий -
Сделал все как в ссылке. Но, не работает при 32 битах глубины цвыета экрана на ХР.
- Изменено sg6336 17 июня 2012 г. 5:47
17 июня 2012 г. 5:46 -
А вообще первой мыслью было указать не Black а #FF000000.
И еще если откройте эту картинку в фотошопе и посмотрите какой вебцвет он показывает для черного.
Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!
17 июня 2012 г. 5:51Отвечающий -
Рисунок делал в CorelDraw.
Как Вы и написали, посмотрел цвета в Photoshop.
Вот что показало про черный цвет:
17 июня 2012 г. 9:55 -
Вот что CorelDraw показывает:
17 июня 2012 г. 10:03 -
Видимо это происходит из-за особенностей отрисовке интерфейса в Windows XP, к сожалению его менять уже и исправлять не будут. Как известно в WindowsForms нет настоящей прозрачности, возможно трудности с прозрачностью связано еще и с этим.
Скорей всего вам придется применить решение, которое вы нашли, либо отказаться или как-то поменять прозрачность.
Для связи [mail]
18 июня 2012 г. 8:24 -
На период демонстрации программы уменьшаю разрядность цвета в «экран» )))
Лучше ничего не нашел
22 июня 2012 г. 10:26