Можно ли сделать фигурный альфа-смешанный диалог?

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

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

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

3 ответа

Решение

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

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

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

Другие вопросы по тегам