Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Как сделать непрямоугольное окно?

#c #windows #интерфейс


Я видел приложения, окна которых имеют какую-то фантастическую форму.

Вопрос: как сделать окно произвольной формы в Windows 7 на Си?
    


Ответы

Ответ 1



Я знаю такие способы: С помощью функцииSetWindowRgn Простой способ Окно будет "прозрачным" для событий мыши, т.е. не будет реагировать на нажатия мыши в прозрачных областях Не поддерживает альфа блендинг (края будут рваные) С помощью расширенного стиля WS_EX_LAYERED Поддерживает попиксельный альфа-блендинг или хромакей Более сложен в использовании, если нужен попиксельный альфа-блендинг При использовании WS_EX_LAYERED, прозрачные пиксели (хромакей) можно устанавливать так: SetLayeredWindowAttributes(m_hWnd, RGB(R,G,B), 0, LWA_COLORKEY); Естественно, по WM_PAINT вы должны заливать прозрачные области тем же цветом. Если вам нужен попиксельный альфа-блендинг, окно нужно отрисовывать не по WM_PAINT, а особым методом с использованием функции UpdateLayeredWindow (пример). Но есть и подводные камни - по RDP окно отображаться не будет. В этом случае нужно делать fallback на хрома-кей.

Комментариев нет:

Отправить комментарий