Я пытаюсь оживить QGraphicsItem, но я не могу найти способ избавиться от мерцания.Элемент имеет список точек (1.000+) и рисует полилинию, составленную из этих точек (например, электрокардиограмму).Я попытался использовать двойную буферизацию (нарисовать линию на растровом изображении) и затем анимировать, но мерцание все еще есть.Вот код для элемента
Graph::Graph(float *data,int length,int frequency,QGraphicsItem *parent) : QGraphicsItem(parent),data(data)
{
this->path = new QPainterPath();
this->pixmap = new QPixmap(3*length,100);
QPainter *p = new QPainter(pixmap);
for (int i=0; i<length; i++){
path->lineTo(3*i,data[i]);
}
pixmap->fill(Qt::black);
p->setPen(Qt::white);
p->drawPath(*path);
setCacheMode(DeviceCoordinateCache);
}
и метод рисования
void Graph::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){
QRectF area = option->exposedRect.toRect();
painter->drawPixmap(area,*pixmap,area);
}
Я использую анимацию QProperty
QPropertyAnimation* animation = new QPropertyAnimation(graph, "pos");
animation->setDuration(70000);
animation->setStartValue(QPointF(0,0));
animation->setEndValue(QPointF(-1500,0));
animation->start();
Любые идеи о том, как улучшитькод