如何用QPainter添加新对象



我想只画新的对象,而不是重新绘制整个图形。这是通过QPainter绘图完成的。QWidget或其他简单的QPaintDevice在paintEvent()事件。

但是我可以使用什么绘画设备或其他对象来添加新的点到现有的点,而不是一遍又一遍地绘制所有的东西?

基本上就是Reto所说的,还有以下额外的考虑:

  1. 可以用作缓存的PaintDevices: http://qt-project.org/doc/qt-4.8/qpaintdevice.html列出了可以使用QPainter绘制到的PaintDevices的可能选项。你正在寻找的可能是:QImage, QPixmap, QPicture,甚至是OpenGL相关的PaintDevices,如果你正在使用硬件加速小部件的话。如果您要执行blit,并且需要直接访问像素数据,则建议使用QImage,否则,对于简单的QPainter操作,QPixMap更快。

  2. 实际上从缓存中绘制新的点:看看QPainter的相关draw{Image/Picture/Pixmap} api,你可以使用它来绘制你已经缓存到的PaintDevice。使用小部件的paintEvent调用中获得的paintEvent中的QPaintEvent::区域来获取需要从缓存复制的矩形,请记住,如果您自己发送更新请求,请使用适当的更新函数来触发paintEvent。

使用QImage作为缓存。因此,首先绘制图像的初始"点",然后将图像绘制到小部件中。在获得新的"点"后,将新的"点"绘制到图像上,并将图像绘制到小部件上。

最新更新