Я работаю с приложением Win32, которому необходимо создать различные пользовательские типы окон. В частности, эти окна часто не прямоугольны, имеют тени или в основном прозрачны.Каков наилучший способ рисования оверлейной графики в Windows?
В настоящее время я использую WS_EX_LAYERED
с UpdateLayeredWindow
, чтобы создать прозрачные окна, чтобы потом рисовать произвольную графику. Тем не менее, я считаю, что многоуровневые окна ограничивают то, что вы не можете иметь слоистые дочерние окна, а также не можете многоуровневое окно правильно размещать «обычные» элементы управления Win32.
Нашей базой кода является несколько лет, используя в основном Win32 и GDI, но мы находимся в процессе модернизации, и пришло время посмотреть на новые технологии.
Я рассмотрел вопрос о том, как сделать свое собственное окно в WPF, но меня беспокоит то, что я читал о проблемах с «воздушным пространством». Похоже, что WPF использует слоистые окна для выполнения альфа-смешивания на пиксель, и, похоже, он также страдает от ограничений, которые я ранее испытывал.
Я не знаю много (ничего, действительно) о Direct2D, но эта технология звучит, как будто это может быть интересно. Хотя, я не могу найти ссылок на то, что я могу делать оверлейные окна.
Итак, все это подводит меня к моей проблеме: какая лучшая технология для создания оверлейных окон под Windows? (Vista и Win7 как минимум, XP было бы неплохо иметь)
Я пренебрегаю некоторыми, особенно хорошими технологиями? Мы ценим любые предложения.