Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: vregess от Август 20, 2012, 17:42



Название: QGraphicsView анимация с "артефактами"
Отправлено: vregess от Август 20, 2012, 17:42
Понадобилась анимировать QGraphicsWidget.
Но в результате анимация получается с "артефактами": видно, как отрисовываются части виджета.
Не смог сделать нормальный скриншот, поэтому нарисовал, как примерно выглядит.

Делаю так:

Инициализация QGraphicsView:
Код
C++ (Qt)
   if (useGL)
   {
       QGLWidget *glw = new QGLWidget(QGLFormat(QGL::SampleBuffers));
       setAutoFillBackground(false);
       setCacheMode(QGraphicsView::CacheNone);
       setViewport(glw);
   }
   else
   {
       setViewport(new QWidget);
       setCacheMode(QGraphicsView::CacheBackground);
       setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
   }
 
   setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
   setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
   setFrameStyle(QFrame::NoFrame);
   setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
 

Сам объект анимации (красный квадрат):
Код
C++ (Qt)
   QGraphicsWidget *w = new  QGraphicsWidget;
   QPalette p = w->palette();
   p.setColor(QPalette::Window, Qt::red);
   w->setPalette(p);
   w->setAutoFillBackground(true);
   w->resize(100, 100);
 

Анимация:
Код
C++ (Qt)
   QPropertyAnimation *a= new QPropertyAnimation(item, "x", parent);
   a->setEasingCurve(QEasingCurve::OutCubic);
   a->setDuration(1000);
   a->setStartValue(start);
   a->setEndValue(end);
 

Почему так коряво отрисовывается анимация простого объекта, мб надо что-нибудь подкрутить?
Qt 4.8.2 (x32), Win7 (x64)
Спасибо.
Прикрепляю тестовый пример.


Название: Re: QGraphicsView анимация с "артефактами"
Отправлено: _OLEGator_ от Август 20, 2012, 19:08
Все работает, никаких артефактов.
Qt 4.8.2, Win7 x64, Visual Studio 2010


Название: Re: QGraphicsView анимация с "артефактами"
Отправлено: vregess от Август 20, 2012, 19:20
Хм. Квадрат двигается плавно? А с OpenGL? Там в main.cpp есть лишняя строчка use_gl = false.
Может быть у меня проблемы с железом, не знаю, что и думать. qtdemo вроде работает более гладко на глаз..
Мб это из-за контрастных цветов?


Название: Re: QGraphicsView анимация с "артефактами"
Отправлено: _OLEGator_ от Август 20, 2012, 19:44
В обоих вариантах все как и должно быть.


Название: Re: QGraphicsView анимация с "артефактами"
Отправлено: vregess от Август 20, 2012, 19:58
Спасибо, попробую на других компах.

PS "как и должно быть" - это как? все некрасиво и вывриглазно?)


Название: Re: QGraphicsView анимация с "артефактами"
Отправлено: _OLEGator_ от Август 20, 2012, 22:54
Как должно быть - это значит анимация плавная, соответственно выбранным настройкам, никаких артефактов не наблюдается.