Windows粉碎玻璃桌面Win32效果?

H4c*_*0rD 0 c++ winapi

我想要一个win32程序,它采用桌面和行为,就像它是粉碎玻璃,最后会把这些碎片重新组合在一起是否有参考用C++做这种效果?

小智 5

几年前我写了一个程序(不幸的是现在输了)来做这样的事情.

可以通过为屏幕创建DC,创建兼容的位图,然后使用BitBlt将屏幕内容复制到位图来检索桌面图像.然后使用GetDIBits以已知格式从此位图获取像素.

这个链接并不完全是这样,但它证明了原理,尽管使用MFC.我找不到特定于Win32的示例:

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

对于破碎效果,最好使用Direct3D或OpenGL.(更多详细信息由您决定.)使用之前保存的位图数据创建纹理.

通过与OpenGL或D3D关联的窗口,创建一个无边框窗口,填充整个屏幕,不进行绘画或背景擦除.这将防止从桌面映像切换到用于绘制的桌面映像的副本时出现任何闪烁.

(如果使用D3D,您还会发现与朋友GetMonitorInfo一起使用很有用IDirect3D9::GetAdapterMonitor,因为您需要为每个显示器创建一个单独的设备,因此您需要知道桌面的哪个部分对应于该设备.)