碎玻璃桌面windows Win32效果? 我想一个Win32程序,它的桌面就像是粉碎玻璃,最后将碎片放回一起,用C++来做这样的效果有什么参考? > P>我写了一个程序(不幸的是现在丢失了),几年前就做了这样的事情。

碎玻璃桌面windows Win32效果? 我想一个Win32程序,它的桌面就像是粉碎玻璃,最后将碎片放回一起,用C++来做这样的效果有什么参考? > P>我写了一个程序(不幸的是现在丢失了),几年前就做了这样的事情。,c++,winapi,C++,Winapi,通过为屏幕创建DC、创建兼容位图,然后使用BitBlt将屏幕内容复制到位图中,可以检索桌面图像。然后使用GetDIBits以已知格式从该位图获取像素 这个链接并不能完全做到这一点,但它演示了这个原理,尽管使用了MFC。我找不到Win32特定的示例: 对于破碎效果,最好使用Direct3D或OpenGL。(更多细节由您决定。)使用先前保存的位图数据创建纹理 通过与OpenGL或D3D关联的窗口,创建一个填充整个屏幕的无边界窗口,而不进行绘制或背景擦除。这将防止从桌面图像切换到用于绘制的桌面图像副

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

这个链接并不能完全做到这一点,但它演示了这个原理,尽管使用了MFC。我找不到Win32特定的示例:

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

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

(如果使用D3D,你会发现
GetMonitorInfo
IDirect3D9::GetAdapterMonitor
和朋友一起使用也很有用,因为你需要为每个监视器创建一个单独的设备,因此你需要知道桌面的哪个部分对应于该设备。)

我写了一个程序(不幸的是现在丢失了)几年前做这样的事

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

这个链接并不能完全做到这一点,但它演示了这个原理,尽管使用了MFC。我找不到Win32特定的示例:

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

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

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