На этом шаге рассмотрим запись команд рисования.
Класс 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()Файлы приложения можно взять здесь.
На следующем шаге рассмотрим перемещение изображения на экране.