Russian Qt Forum
Ноябрь 01, 2024, 02:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView - запомнить а потом воспроизвести графику  (Прочитано 2004 раз)
Yegor
Гость
« : Апрель 30, 2014, 15:53 »

    Здравствуйте, дорогие форумчане!

    Использую Qt 4.8.2
    Подскажите, пожалуйста, про использование класса QPainter.

    У меня есть класс GraphItem, унаследованный от QGraphicsItem.
    В его переопределенном виртуальном методе для рисования я рисую свою графику:

Код:
GraphItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget )
{
    //Рисую своим объектом.
    pClock->draw(painter);
}

    Причем эту свою графику я выполняю с помощью своего класса, указатель на который - pClock
То есть в свой объект я передаю указатель для рисования - painter (это параметр из метода GraphItem::paint), а мой объект далее все рисует уже сам.

    Но вот только я хочу, чтобы при первом рисовании (при первом вызове GraphItem::paint), сначала рисовалось все моим объектом. А при следующих вызовах GraphItem::paint все то же самое рисовалось уже без моего объекта. То есть чтобы мой объект сначала только один первый раз нарисовал, далее чтобы из QPainter вся эта информация куда либо запомнилась, а затем воспроизводилась. Воспроизводилась сама, без моего объекта.

    Чтобы код выглядел похоже на этот фрагмент:

Код:
GraphItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget )
{
    //Флаг о состоянии инициализации.
    static bool IsInited = FALSE;

    //Рисую своим объектом. Только первый раз.
    if(!IsInited)
    {
        pClock->draw(painter); //Нарисовать своим.
        IsInited = TRUE; //Уже нарисовал.

        //Как то запомнить графическую информацию из готового (прорисованного QPainter).
        ...
    }

    //Иначе объект был уже нарисован. Воспроизвести сохраненное.
    else
    {
        //Как то воспроизвести записанное изображение.
        ...
    }
}

В общем задача в том, чтобы нарисованное изображение сохранить куда либо в QPainter, а затем воспроизвести. И чтобы это работало в методе GraphItem::paint. Подскажите, пожалуйста, как это сделать?
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #1 : Апрель 30, 2014, 17:22 »

Как то сумбурно. Нарисуйте свою графику в pixmap соответствующего размера, а в paintEvent просто рисуйте сгенерированный ранее pixmap.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.09 секунд. Запросов: 22.