【发布时间】:2015-12-13 01:24:19
【问题描述】:
我想知道是否可以通过复制像素而不是重绘来移动绘图的一部分。
我在嵌入式环境中工作,其中性能是一个关键因素。我们使用 Qt 4.8。
我有一组要绘制的实时数据点。我定义了以下类:
class SetOfDataPoints : public QGraphicsItem
{
public:
<constructor>
QRectF boundingRect() const { ... }
void paint(QPainter* painter,
const QStyleOptionGraphicsItem* option,
QWidget* widget = NULL) { ... }
<other methods>
};
每隔一段时间,我读取一个新数据点,将其添加到SetOfDataPoints 的实例中,并将SetOfDataPoints 向左移动(通过在SetOfDataPoints 上调用QGraphicsItem::moveBy()),所以新数据点变得可见。结果,SetOfDataPoints::paint() 被调用,在该方法中我必须绘制 整个 数据点集。绘图目前仅包含连接数据点的线段,但未来会变得更加精细。
现在,重新绘制整个数据点集感觉效率很低,因为大多数图表实际上只是向左移动。我想将图形未更改部分的像素向左移动,并仅绘制连接最后两点的一条线段。至少我想尝试一下,并衡量这对性能的提升程度。
有没有办法在 Qt 4.8 中做到这一点?
【问题讨论】:
标签: qt graphics qt4 pixel qgraphicsitem