Как Rainlendar достигает прозрачности с помощью wxWidgets - PullRequest
2 голосов
/ 14 апреля 2009

Rainlendar - фантастическая кроссплатформенная календарная программа, написанная с помощью wxWidgets. Как достигается эффект прозрачности? У кого-нибудь есть пример кода, демонстрирующий эффект прозрачности?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2009

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

Вот список API

РЕДАКТИРОВАНИЕ: Просто для пояснения, использование (помимо необходимости вызывать StartDrawingOnTop и EndDrawingOnTop) идентично любому другому wxDC.

1 голос
/ 14 апреля 2009

wxTopLevelWindow :: SetTransparent () метод может быть тем, что вам нужно.

...