Шаг 195.
Библиотека Qt.
Класс QPainter

    На этом шаге рассмотрим класс QPainter.

    Класс QPainter, определенный в заголовочном файле QPainter, является исполнителем команд рисования. Он содержит массу методов для отображения линий, прямоугольников, окружностей и др. Рисование осуществляется на всех объектах классов, унаследованных от класса QPaintDevice (рис. 1).


Рис.1. QPainter и контексты рисования

    Это означает, что то, что отображается контекстом рисования одного объекта, может быть точно так же отображено контекстом и другого объекта.

    Чтобы использовать объект QPainter, необходимо передать ему адрес объекта контекста, на котором должно осуществляться рисование. Этот адрес можно передать как в конструкторе, так и с помощью метода QPainter::begin(). Смысл метода begin() состоит в том, что он позволяет рисовать на одном контексте несколькими объектами класса QPainter. При использовании метода begin() нужно по окончании работы с контекстом вызвать метод QPainter::end(), чтобы отсоединить установенную этим методом связь с контекстом рисования, давая другому объекту возможность для рисования:

QPainter painter1;
QPainter painter2;
painter1.begin(this);
// Команды рисования 
painter1.end();
painter2.begin(this);
// Команды рисования
painter2.end();

    Но чаще всего используется рисование одним объектом QPainter в разных контекстах:

QPainter painter;
painter.begin(this); //контекст виджета
//Команды рисования
painter.end();
QPixmap pix(rect());
painter.begin(&pix); //контекст растрового изображения
// Команды рисования
painter.end(); 

    Объекты QPainter содержат установки, влияющие на их рисование. Это могут быть трансформации координат, модификация кисти и пера, установка шрифта, установка режима сглаживания и т. д. Поэтому, для того чтобы оставить старые настройки без изменений, рекомендуется перед началом изменения сохранить их с помощью метода QPainter::save(), а по окончании работы — восстановить, с помощью метода QPainter::restore().

    На следующем шаге рассмотрим класс QPen.




Предыдущий шаг Содержание Следующий шаг