Shatter Glass настольный эффект Win32 для windows? - PullRequest
0 голосов
/ 15 февраля 2010

Мне нужна программа win32, которая берет рабочий стол и ведет себя так, как будто он разбивает стекло, и в конце концов соберет все воедино. Есть ли способ справиться с выполнением такого эффекта с C ++?

1 Ответ

5 голосов
/ 15 февраля 2010

Я написал программу (к сожалению, сейчас потерянную), чтобы сделать что-то подобное несколько лет назад.

Изображение рабочего стола можно получить, создав DC для экрана, создав совместимое растровое изображение, а затем используя BitBlt, чтобы скопировать содержимое экрана в растровое изображение. Затем используйте GetDIBits, чтобы получить пиксели из этого растрового изображения в известном формате.

Эта ссылка не совсем делает это, но демонстрирует принцип, хотя и использует MFC. Я не смог найти пример для Win32:

http://www.flounder.com/screencapture.htm

Для эффекта разрушения лучше всего использовать Direct3D или OpenGL. (Дальнейшие подробности зависят от вас.) Создайте текстуру, используя данные растрового изображения, сохраненные ранее.

Посредством окна для связи с OpenGL или D3D создайте окно без полей, которое заполняет весь экран и не выполняет рисование или стирание фона. Это предотвратит любое мерцание при переключении с изображения рабочего стола на копию изображения рабочего стола, используемого для рисования.

(При использовании D3D вы также найдете GetMonitorInfo полезным в сочетании с IDirect3D9::GetAdapterMonitor и друзьями, так как вам нужно будет создать отдельное устройство для каждого монитора, и поэтому вам нужно будет знать, какая часть рабочий стол соответствует этому устройству.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...