Высокая загрузка ЦП Вращающийся QGraphicsItem

Я использую C ++ и QT Creator с 32-битным MinGW QT 5.0.2 на Windows 8.

У меня есть обычай QGraphicsItem состоящий из нескольких (около 20) горизонтальных линий разной длины и ширины. На концах каждой строки есть несколько цифр, нарисованных в виде текста. Внутри paint(...) Функция моего пользовательского элемента рассчитывает несколько тригонометрических вещей, но это не должно быть так дорого. Я также попытался частично перекрасить предмет. Функция рисования выглядит так:

void myCustomItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)

с этим псевдо телом:

//set brush and pen etc
...

//partially repaint
painter->setClipRect( option->exposedRect );

//draw some lines
for(int i=0; i < lines; ++i)
painter.drawLine(...);

//calculate arithmetic and trigonometric stuff
....

//draw some text
for(int n=0; n < texts; ++n)
painter.drawText(...);

это QGraphicsItem Объект отображается внутри QGraphicsScene на QGraphicsView с активированным сглаживанием.

Каждые 30 мс (при QTimer) его вращение задается с помощью следующего кода, где (x,y) центр вращения, degrees значение вращения и item мой пользовательский элемент подкласс QGraphicsItem,

item.setTransform(QTransform().translate(x, y).rotate(roll).translate(-x, -y))

Таким образом, каждые 30 мс paint(...) функция называется.
Это приводит к высокой загрузке ЦП более 20%. Больше ничего не нужно визуализировать в представлении и больше ничего не нужно вычислять вне представления. Я не уверен, является ли использование этого процессора нормальным для таких операций (с довольно плохим процессором (APU AMD A4-4355M с Radeon HD Graphics)) … в любом случае, процессор мне кажется довольно высоким.

Вообще говоря, есть ли способ минимизировать вычислительные затраты на вращение и / или перевод QGraphicsItem ?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]