水煮百合

Hallowed are the Ori

张义ID:Tigatron
18772次访问,排名6121好友1人,关注者1
.
Tigatron的文章
原创 5 篇
翻译 0 篇
转载 0 篇
评论 24 篇
NightElvs@LilyBBS的公告
 View My Public Stats on MyBlogLog.com
Search Engine Optimization

最近评论
NightElvs:kill 掉好啊,你 Blog 上的 Google 广告在 Firefox 上显示有问题的;
不过你 blog 上的是 W3CHINA 的,我这边的 Google Ads 是我自己到 Google 申请的啊……呵呵
eyounx:我blog上的被我直接kill了
冷飞扬:原来是这样有的,长见识了!
NightElvs:呃……关于这一点是有点奇怪,这种方法用在桌面程序上可以提高绘图效率,一般是称作“双缓冲”的;您说的应该是在多线程环境下更有效率吧。

PS: 刚才 Google 了一下“双缓冲”,找到了卢彦的这篇《利用GDI+的双缓冲技术来提高绘图效率》(http://blog.joycode.com/5drush/articles/10701.aspx),2004 年的,我这篇貌似拾人牙慧了
NightElvs:游戏里面是常使用类似的方法,一次性在屏幕上绘图,提高真实感;此外,一般还要借助硬件来完成部分操作(例如将 buffer 拷贝到屏幕上),充分提高性能
文章分类
    收藏
      相册
      mi fotoz
      uploaded files
      wow scrshots
      Special
      天的子园(RSS)
      fedora-cn
      CLE 档案伺服器 -- 字型区
      E-Mail Icon Generator
      Sketch2PSTricks Homepage
      Blog收藏夹
      BlueSilence's(RSS)
      bnbear's(RSS)
      Demo@virushuo(RSS)
      Free Sky 自由的天空(RSS)
      jjwwjjww's(RSS)
      liquer's Blog(RSS)
      nbx's
      someday's(RSS)
      丰雪心(RSS)
      阳光下的自组织 FangQ
      好友Blog
      bbbush's(RSS)
      DarkBassoon's(RSS)
      donggua(RSS)
      eyounx(RSS)
      mix 的 world(RSS)
      nexttime 的新家(英佩)(RSS)
      outside -- ayuan's(RSS)
      冷飞扬-- 往事如风(RSS)
      刀刀同学的笃雅堂(RSS)
      滨滨(RSS)
      蛋蛋 daniel's(RSS)
      书签
      LinuxSir
      Ubuntu Linux
      文泉驿点阵中文(RSS)
      Spread Firefox(RSS)
      小百合 BBS 海外站
      Don Knuth's Home Page
      The Mono Project
      ytht BBS
      DejaVu fonts
      LumaQQ 主页(RSS)
      Google Code
      Lua
      MPlayer
      nesC Homepage
      Posuring Homesite
      Wiki | Debian 中文工作组(RSS)
      传承标准(Neo.K)
      开源软件国际化·简体中文组
      渤麥堂(RSS)
      维基百科
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 使用 GDI+ 进行双缓冲绘图收藏

      新一篇: IP 地址段的一种表示方法 | 

      所谓“双缓冲”,我的理解是在绘图时并不是直接绘到目标设备(例如显示器)上,而是在内存中开辟一个缓冲区,在这个缓冲区里完成所有的绘图后,直接将其“拷贝”到目标设备上,其中的原理很简单。采用双缓冲技术,由于绘图操作大部分在内存中完成,所以绘图速度没有太大的制约;此外,当进行复杂的绘图操作时,使用双缓冲技术可以有效的防止画面的闪烁。
        在 .Net  中,由于 GDI+ 的引入,实现双缓冲更加简单:
      1. 建立缓冲区
      2. 从缓冲区取得 Graphics handle, 使用其进行绘图
      3. 将缓冲区内已绘好的图显示到目标设备上
      代码如下:
              using(Bitmap buffer = new Bitmap(WIDTH, HEIGHT)) {
                  using(Graphics buf_g = Graphics.FromBitmap(buffer)) {
                      //using buf_g to do the drawing, like this:

                      buf_g.DrawRectangle(10, 10, 120, 150);
                      //....
        
                      //end of the drawing code
                  }
                  using(Graphics g = /* ... */) {
                      //init g from a Control, or anything else
                      g.DrawBitmap(buffer, 0, 0);
                  }
              }

      发表于 @ 2005年03月21日 21:41:00|编辑

      新一篇: IP 地址段的一种表示方法 | 

      评论

      #NightElvs 发表于2005-03-22 14:55:00  IP: 222.94.3.*
      游戏里面是常使用类似的方法,一次性在屏幕上绘图,提高真实感;此外,一般还要借助硬件来完成部分操作(例如将 buffer 拷贝到屏幕上),充分提高性能
      #lover_P 发表于2005-03-22 14:55:00  IP: 218.247.0.*
      这个……好像……没有……“双”缓冲吧?
      双缓冲好像需要两个Bitmap,外加一个指示有效缓冲区的flag,然后分别在有效缓冲中绘图,而把另外的缓冲(上一次绘制好的)Draw到Graphic里吧?
      #NightElvs 发表于2005-03-22 15:17:00  IP: 222.94.3.*
      呃……关于这一点是有点奇怪,这种方法用在桌面程序上可以提高绘图效率,一般是称作“双缓冲”的;您说的应该是在多线程环境下更有效率吧。

      PS: 刚才 Google 了一下“双缓冲”,找到了卢彦的这篇《利用GDI+的双缓冲技术来提高绘图效率》(http://blog.joycode.com/5drush/articles/10701.aspx),2004 年的,我这篇貌似拾人牙慧了
      #lovebanyi 发表于2005-03-22 13:53:00  IP: 218.86.14.*
      在游戏开发的书上看到.
      我们可以把要绘图绘到屏幕外..这样它就只保存在内存中了.
      到绘画后.把它移进来.
      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © NightElvs@LilyBBS