Qt|双缓存机制
上一章节讲述了 MFC 框架下的双缓存机制,那么对于 Qt 框架,是不是也有同样的双缓存机制呢?当前,在 Qt 框架下也存在了双缓存机制,那么接下来就来讲述如何实现在 Qt 中应用双缓存机制吧!
在早期的 Qt 版本中,也存在了和 MFC 框架同样的问题,控件重绘时会产生闪烁现象,控件绘制频繁时,这种情况更为严重。不过,在 Qt5 版本之后,QWidget 控件已经能够自动处理闪烁的问题了,虽然 Qt 框架中双缓存机制用的少了,但是在某些场合中仍然排上用场。
当我们需要绘制的图形比较复杂并且需要频繁刷新时,或者每次只刷新整个控件或者整个窗口的一小部分时,仍需要采用双缓存机制。
一般思路:在绘制控件的时候,首先将要绘制的内容绘制到一个图片上(QPixmap 或者其他),再将图片一次性的绘制到控件上。
第一步:创建 QPixmap 对象接收绘制内容
复制代码
第二步:双缓存机制
复制代码
以 QPixmap 对象为 QPaintDevice 参数绘制。
在构造一个 QPainter 对象时,就立刻对绘图设备进行绘制,在这里 QPainter 对象是短期的,并且只能调用一次。
开始于 begin()函数,并且在调用 end()函数结束。
在绘制外部设备时,应该直接使用begin()
和end()
,例如打印机设备等等。
复制代码
类似于我们在程序中的这种写法:
评论