Можно ли сделать фигурный альфа-смешанный диалог? - PullRequest
1 голос
/ 19 мая 2010

Я делаю непрямоугольный диалог, смоделированный над изображением из Photoshop (изображение является фоном диалога, и пользователь увидит через прозрачную часть изображения). Я похож на окно в стиле приборной панели для медиа-приложения с несколькими нарисованными пользователем элементами управления. Большая часть фонового изображения является либо непрозрачной, либо на 100% прозрачной, но между ними имеется тонкая область частично прозрачных пикселей, чтобы плавно сливать изображение с фоном. Это прекрасно работает для веб-графики, но я не нашел способа заставить это работать для окон Windows. Я использую библиотеку шаблонов Windows (WTL), msvc 2008 - и приложение должно работать на Windows XP, а также на Vista и Windows 7.

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

Кто-нибудь знает о каких-либо функциях API для этого (часть WTL или достижимая из WTL)?

Ответы [ 3 ]

0 голосов
/ 19 мая 2010

Возможно, вы могли бы использовать многослойные окна ? Я не тестировал их с WTL, но вы должны получить желаемый эффект. Насколько я знаю, я не думаю, что вы можете добавить элементы управления в многоуровневое окно, поэтому вам необходимо прикрепить его к другому (не слоистому) окну, чтобы использовать элементы управления.

0 голосов
/ 20 мая 2010

В этой статье показано, как использовать многоуровневые окна с WTL и API Gdi +, доступным на всех ваших целевых платформах.

0 голосов
/ 19 мая 2010

Не знаю, как это взаимодействует с WTL, но взгляните на функцию AlphaBlend . Вам нужно будет выбрать частично прозрачное растровое изображение в DC и скопировать его в DC вашего диалога в вашей функции рисования.

...