2009-12-29 51 views

回答

1

你想缓存绘画在QImageQPixmap(可能是QPixmap)。如果你做了很多,你可能也想看看QPixmapCache

此外,可以预先计算大量绘图,然后使用QPainterPath s很快完成。我会经常使用它们并在必要时重新计算,而不是在像素图中缓存整个绘画事件。

编辑:

我也跑进QPicture简单地提到,这也可能是你想要看的东西:

的QPicture类是油漆设备,记录和重放QPainter命令。

+1

确保使用pixmap缓存的基于整数的接口,而不是基于旧的字符串的接口(在4.6中添加)。 – e8johan 2009-12-29 19:57:51

1

如果你想避免在paintEvent()中实例化变量,你可以使它们成为成员变量 - 这包括QPainter对象。你只需要调用update(),当你需要小部件重新绘制自己。

为什么你不想从头开始重新绘制它?这是某种不成熟的优化,还是你注意到放缓?

+0

没有注意到放缓,做它优化。 – 2009-12-29 19:20:20

+0

完成我的paintEvent后,我发现每次只重绘整个东西并不复杂 – 2009-12-29 22:47:30