Я бы пошел просто для первого выстрела.
Если вы не используете аппаратный рендеринг с ускорением, вы можете выполнить рендеринг в QPixmap
, который вы сохранили как элемент вашего экземпляра (назовем его buffer
).
QPixmap* buffer = new QPixmap( this->size());
QPainter painter( buffer);
painter.draw(...) //draw your stuff in it
Затем при рисовании, когда вы отслеживаете движения мыши, визуализируйте ваш buffer
в качестве фона (должен быть очень быстрым, поскольку не требуется никакого преобразования / смешивания), а затем нарисуйте динамическую линию сверху.1010 *
Вы должны следить за загрязненностью области рисования, чтобы при необходимости повторно визуализировать buffer
(изменить размер / добавить материал / ...).
ПРИМЕЧАНИЕ: если вы используете OpenGL, то же самое можно сделать с буфером рендеринга или пиксельными буферами ... смотрите пример Qt PixelBuffer