博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

GUI设计中的双缓存技术

Posted on 2010-11-02 10:04  Billowen  阅读(593)  评论(2)    收藏  举报

      双缓存技术在现在的GUI设计中应用很广,很多GUI套件都支持双缓存技术,如QT。

      最早了解到双缓存技术是当初在思考如何绘制橡皮筋选择框。由于在鼠标拖动时,橡皮筋选择框要进行不断的重绘,刚开始想到一个比较搓的方法是:记下当前橡皮筋选择框上的像素颜色,然后在画上选择框,当鼠标拖动时,擦除原来的橡皮筋选择框,填上原来的像素颜色,然后重新绘制。很绕啊,总感觉逻辑不过简洁,同时实现起来也是有点麻烦的。

      双缓存技术是首先在屏幕外,通常就是内存中先将图像绘制好,然后在将图像一次性复制到屏幕上,这样可以避免屏幕闪烁等现象。我猜想这也是PS打开慢的一个原因,PS可能也是先将图像绘制到内存当中,不然,遇到一个几G的图片时,直接往屏幕上绘制,那一点一点刷出来的感觉可是相当不好啊。

      回到我当初遇到的问题,在内存中存一份与屏幕对应的PIXMAP,PIXMAP应该存屏幕上稳定的图像。选择框是动态的,不是稳定的图像。每次需要重绘时,只要将这PIXMAP复制到屏幕上,再在屏幕上画选择框,这样想起来就轻松多了。