На этом шаге рассмотрим запись команд рисования.
Класс QPicture — это контекст рисования, который предоставляет возможность протоколирования команд класса QPainter. С его помощью команды можно даже записывать в отдельные файлы (называемые метафайлами), а потом загружать их снова, чтобы повторить ранее проделанные действия. Эти действия можно перенаправлять и на другие контексты рисования, например принтер или экран. Ниже представлена запись одной команды рисования в файл myline.dat.
QPicture pic; QPainter painter; painter.begin(&pic); painter.drawLine(20, 20, 50, 50); painter.end(); if (!pic.save("myline.dat")) { qDebug() << "Не могу сохранить файл"; }
Следующий код демонстрирует загрузку команд из файла и их исполнение в другом контексте. Для отображения в другом контексте используется метод drawPicture(). Первый параметр этого метода устанавливает позицию, с которой начнется рисование, а во втором параметре передается объект класса QPicture.
QPicture pic; if (!pic.load("myline.dat")) { qDebug() << "Не могу загрузить файл"; } QPainter painter; painter.begin(this) painter.drawPicture(QPoint(0, 0), pic); painter.end()
Файлы приложения можно взять здесь.
На следующем шаге рассмотрим перемещение изображения на экране.