写点什么

Qt|双缓存机制

  • 2022 年 10 月 04 日
    河北
  • 本文字数:573 字

    阅读完需:约 2 分钟

Qt|双缓存机制

上一章节讲述了 MFC 框架下的双缓存机制,那么对于 Qt 框架,是不是也有同样的双缓存机制呢?当前,在 Qt 框架下也存在了双缓存机制,那么接下来就来讲述如何实现在 Qt 中应用双缓存机制吧!


在早期的 Qt 版本中,也存在了和 MFC 框架同样的问题,控件重绘时会产生闪烁现象,控件绘制频繁时,这种情况更为严重。不过,在 Qt5 版本之后,QWidget 控件已经能够自动处理闪烁的问题了,虽然 Qt 框架中双缓存机制用的少了,但是在某些场合中仍然排上用场。


当我们需要绘制的图形比较复杂并且需要频繁刷新时,或者每次只刷新整个控件或者整个窗口的一小部分时,仍需要采用双缓存机制。


一般思路:在绘制控件的时候,首先将要绘制的内容绘制到一个图片上(QPixmap 或者其他),再将图片一次性的绘制到控件上。


第一步:创建 QPixmap 对象接收绘制内容

setAutoFillBackground(true);pix = new QPixmap(size());
复制代码

第二步:双缓存机制

painter->begin(pix);
//中间处理数据
painter->end();
复制代码

以 QPixmap 对象为 QPaintDevice 参数绘制。


在构造一个 QPainter 对象时,就立刻对绘图设备进行绘制,在这里 QPainter 对象是短期的,并且只能调用一次。


开始于 begin()函数,并且在调用 end()函数结束。


在绘制外部设备时,应该直接使用begin()end(),例如打印机设备等等。

QPainter painter;painter->begin(this);painter->drawLine(...);painter->end();
复制代码

类似于我们在程序中的这种写法:


用户头像

书山有路勤为径,学海无涯苦作舟 2022.07.01 加入

擅长语言:C++ 涉及语言:Python

评论

发布
暂无评论
Qt|双缓存机制_c++_中国好公民st_InfoQ写作社区