最近对屏幕绘图比较感兴趣 用API也做了些BLT的东西 但是发现差距之大 难以形容
看到网上有人发了个“Star Cursor”的程序 (传说中的泡泡鼠标)
大概功能是在你的鼠标后面跟些小泡泡小星星的 有ALPHA BLENDING
因为据说作者是个日本人 所以偶很不服气 也想做一个出来 好歹给偶们民族争争光哈目前程序写了一半 HOOK鼠标和BLENDING都没啥问题
就是屏幕绘图上感觉效率低而且有BUG 绘图之后没办法保证不破坏原有背景
来这里问问大虾们 有没有什么办法可以实现在顶层绘图 而不需要去更新背景
其实感觉就像系统鼠标那样 始终介于屏幕顶层 而且不会破坏背景?直接用GDI贴图效率和效果都好差~ 难道要用DX贴? 但是背景破坏现象依然存在哈~
真的很恼火 现在怀疑那个程序是不是写的虚拟设备驱动 加在鼠标后面的哦大家都来讨论一下吧~

解决方案 »

  1.   

    直接用bitblt在desktopdc上面画,要实现alpha效果要多次调用它,一边画一边用RedrawWindow刷新桌面相关区域 ,以保证背景不被破坏。
      

  2.   

    最好的解决方法的确应该是dx,不过你说的什么“屏幕绘图上感觉效率低而且有BUG ”,这个就难说了贴代码出来大家讨论一下吧。
      

  3.   

    其实这个问题并不难解决的.
    并且正是用桌面GDI就可以做到的.
    楼主感觉幕绘图上效率低而且有BUG.我猜想楼主或许并没有真正尝试过认认真真去写这样一个程序,或者是在程序的思路上还不完善的缘故.
    我这里推荐一个很小的游戏,是我写的一个历程,完全使用GDI.
    虽然并非是在桌面上进行绘制,但是游戏也同样有背景,也需要考虑到背景擦除和恢复,但是速度并不慢,并且没有什么BUG.并且只要稍微改动一下,就可以成为一个桌面版的.
    地址:http://www.tttcn.cn/blog/1914/
    写得很粗糙,但是楼主可以尝试一下把速度调到最快,相信不会出现任何不流畅的感觉.
    如果楼主有意,我也会将源代码公开.
      

  4.   

    回楼上的兄弟们:  今天礼拜天,没上班所以没办法发代码。等到礼拜一上班了,我找机会把代码贴上来哈。  关于背景重绘的问题我和朋友讨论过,结论是如果可以即时取得屏幕重绘的区域(就是截获WM_PAINT消息)并更新到后台缓冲页面(现在我利用后台缓冲页面确实提高了一些绘图效率),只要处理得当应该会有较好的效率。  具体实现可能要花费一两天的功夫。大家稍等哈~
      

  5.   

    回复:WallesCai(沧海明月一度,西风残阳无悔.)   蝈蝈也姓蔡么,看来我们是本家哈~~  我看过蝈蝈的程序了,确实很不错哈~  不过我发现在敌物很多的时候,FPS还是有比较明显的下降。同时当游戏速度提高之后,明显看到了画面有闪烁。  没关系,大家继续讨论吧。我们可以做到最好!
      

  6.   

    我已经完全否决了之前的所有方法在仔细分析了日本人的程序之后新的设计方法已经跟他的一样了很难以置信的 他采用的是UpdateLayeredWindow这个生僻的API……我看看把我写的程序发到什么地方先