51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3813|回复: 0
打印 上一主题 下一主题

GDI画图的几种方式(小游戏不闪烁)

[复制链接]
  • TA的每日心情
    慵懒
    2015-1-8 08:46
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2007-12-13 10:27:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1 画图方式:
       1.1 使用临时DC,先将要画的界面全部画到临时DC,到最后才全部帖回原DC,这样就不会出现闪烁.
       1.2 创建的GDI对象要删除,不然会造成泄露.
            将新对象选进DC,一般要保留旧的对象,然后用完新对象,把老对象选回DC.
            一般Create*** 函数多要记得Delete***
                GetDC         <-->    ReleaseDC
            还有就是CPaintDC dc(this),获取的DC,不需要你去删除,并且CPaintDC已经封装了
            BeginPaint和EndPaint组合  

    2 更新方式:
       2.1 全部画图全部更新
              这种方式主要用在控件上(小范围),画的东西并不多,可以采用本方式
       2.2 全部画图局部更新
              此方式用的比较多,主要还是方便,但是CPU占用相对来说还是高了一点
              我的一个麻将采用这种方式,结果占用CPU一般保持在5%(5%-10%)[测试环境:笔记本无显卡]
       2.3 局部画图局部更新
              这个方法是最好的,不过代码相对复杂一点,如果类封装的好,也没什么问题.
              我的纸牌和一些飞机小游戏游戏采用这类方式,CPU占用一般只有1-3%[测试环境:笔记本无显卡]
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-22 22:44 , Processed in 0.072559 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表