Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: alexman от Октябрь 10, 2012, 10:45



Название: Искажения при рисовке примитивов при отображении с кешем DeviceCoordinateCache.
Отправлено: alexman от Октябрь 10, 2012, 10:45
Есть наследник QGraphicsItem с кешем DeviceCoordinateCache. При рисовке отображаются примитивы: квадратики, крестики... Проблема в том, что один и тот же примитив при рисовке выглядит по разному. Как решить эту проблему?

Примитив на вход передается в виде QPixmap. Сама рисовка:
Код:
                 painter->save();
painter->setWorldMatrixEnabled(false);

const QTransform &transform = painter->transform();
const double dx = m_pixmap.width() * 0.5;
const double dy = m_pixmap.height() * 0.5;

foreach (QPointF point, m_points) {
                        point = transform.map(point);
painter->drawPixmap(point.x() - dx, point.y() - dy, m_pixmap);
}

painter->restore();


Название: Re: Искажения при рисовке примитивов при отображении с кешем DeviceCoordinateCache.
Отправлено: Maxz от Октябрь 10, 2012, 12:02
Нужно стереть предыдущий вариант отрисовки примитива - если координаты одинаковые, он накладывается поверх старого


Название: Re: Искажения при рисовке примитивов при отображении с кешем DeviceCoordinateCache.
Отправлено: alexman от Октябрь 10, 2012, 13:11
Нужно стереть предыдущий вариант отрисовки примитива - если координаты одинаковые, он накладывается поверх старого
не то


Название: Re: Искажения при рисовке примитивов при отображении с кешем DeviceCoordinateCache.
Отправлено: alexman от Октябрь 20, 2012, 11:53
Проблема ясна: при скроле происходит дорисовка только новой части. Из-за погрешности на стыке получаются обрезки и выглядит это коряво:(