Добавление компонентов в прозрачную форму - PullRequest
0 голосов
/ 18 октября 2011

Я использовал этот код из код проекта для отображения изображения .png (с прозрачностью).В строке 87 я попытался добавить ярлык, в котором мне это удалось, но каким-то образом он не появится в форме.Я попробовал Обновить, Invalidate, но ни один из них не сработал.Может быть, кто-то может указать мне правильное направление.

1 Ответ

1 голос
/ 18 октября 2011

Я думаю, поскольку вы используете UpdateLayeredWindow, «нормальный» механизм рисования отключен, то есть сообщения WM_PAINT не отправляются в окно, а библиотека WinForms не имеет возможности визуализировать элементы управления Label.

Я обнаружил эту статью об использовании многослойных окон на MSDN:

Обратите внимание, что при использовании UpdateLayeredWindow приложение не должно отвечать на WM_PAINTили другие сообщения рисования, поскольку оно уже предоставило визуальное представление для окна, и система позаботится о сохранении этого изображения, его составлении и отображении на экране.UpdateLayeredWindow довольно мощный, но часто требует изменения способа рисования существующего приложения Win32.

Так что я боюсь, что WinForms не сможет работать вместе с вашим подходом.Даже если бы это было так, вы, скорее всего, получили бы неприятные результаты, поскольку «настоящую» прозрачность нелегко сделать с помощью winforms (т. Е. Метки не будут отображаться прозрачно, но будут отображаться цветом фона родительских форм)

...