如何用VC在桌面上绘制动画
我想用GDI在桌面上绘制动画,比如网上流行的一种下雪程序。网上的下雪程序大多是雪点,而且在Win7下好像运行不了,我想做一个程序,使用贴图的方式来绘制雪花,并且能在Win7下运行。我知道如何去桌面的设备内容并在桌面上绘图,但是无法做成动画,因为我贴的雪花不是像素点,而是一张大雪花的图片,做动画的话需要重绘桌面,但是网上关于桌面重绘的例子好像都不行。除此之外还有个问题,就是虽然我能够取得桌面的设备内容,但是画好图后,如果通过双缓冲贴图,就会使得背景变成全黑,但是我想要的是还是桌面那个样子,是不是要通过截屏来解决这个问题啊?
所以我觉得目前我需要解决的问题是如何重绘桌面。
我在论坛里有搜索过这个问题,好像没有完全相同的。有人问如何画像Q宠企鹅或一只会动的小猫小狗的问题,回答是用异型窗口,但是如果是下雪的话,岂不是每个雪花都要一个窗口?这恐怕实现不了吧,效率上很存在问题啊。然后有的人说用全屏透明窗口,但是透明窗口我试过,一旦透明,窗口中的雪花也会随之透明,完全透明的情况下就什么都看不到了,而且还有个问题是,如果是窗口透明,那还是有个窗口覆盖在桌面上,被窗口所覆盖到的地方,没办法进行正常的操作,比如说打开桌面上的应用程序等。
当然,有知道其他更好的办法的也可以。但是必须要是用GDI来编写的程序,因为我现在只会这个,并且我的程序不仅仅是想让桌面下雪,我还想让它根据四季来切换成不同的动画。比如夏天就来个烈日当头的动画。所以我要的绝不是一张单纯的GIF或flash壁纸,而是一个程序。
另外,我发现在桌面上绘图时,无论如何,绘制的图形总是位于最上端,有没有办法让其像壁纸一样始终位于最底端?
说的有点乱,不知道有没有说清楚,没有说清楚的地方还请大家多多包涵,并指出来。 VC 动画 GDI API
[解决办法]
然后有的人说用全屏透明窗口,但是透明窗口我试过,一旦透明,窗口中的雪花也会随之透明,完全透明的情况下就什么都看不到了,而且还有个问题是,如果是窗口透明,那还是有个窗口覆盖在桌面上,被窗口所覆盖到的地方,没办法进行正常的操作,比如说打开桌面上的应用程序等。
个人认为透明窗体是可以实现的。
1、窗体透明不一定要整个窗体透明,lz可以透明一种颜色。例如在注册窗口类的时候,将背景设置为wcex.hbrBackground= (HBRUSH)(COLOR_BTNFACE+1);
透明的时候运用
SetLayeredWindowAttributes(m_hWnd,RGB(0,0,0),0,LWA_COLORKEY);
这样背景就没有了 而且是背景是全透明 底部遮挡的桌面可以正常接收消息 例如双击桌面图标。
[解决办法]
这个东西 要不做过的人,知道 要不按一些方法 测试下
[解决办法]
http://www.codeproject.com/Articles/29184/A-lovely-goldfish-desktop-pet-using-alpha-PNG-and
[解决办法]
找找一些可用的源代码试试