在绘画活动期间,我如何重复使用以前的绘画,以便我可以在之前的结果上绘画。现在整个渲染区域需要重新绘制。
试试QPixmap。
我绝对需要使用更新吗?
答案 0 :(得分:1)
如果你想避免在paintEvent()中实例化变量,你可以使它们成为成员变量 - 这包括QPainter对象。您只需要在需要窗口小部件重新绘制时调用update()。
为什么你不想从头开始重绘它?这是某种过早的优化,还是你注意到减速?
答案 1 :(得分:1)
您希望将绘画缓存在QImage
或QPixmap
(可能是QPixmap
)中。如果你这么做,你可能还想看看QPixmapCache
。
此外,可以预先计算很多绘图,然后使用QPainterPath
相当快速地完成。我会经常使用它们并在必要时重新计算,而不是在pixmap中缓存整个绘制事件。
修改强>
我还简要提到了QPicture,这也可能是你想看的东西:
QPicture类是一个绘制设备,用于记录和重放QPainter命令。