Шаг 220.
Библиотека Qt.
Класс QPixmap

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

    Этот класс унаследован от класса контекста рисования QPaintDevice. Его определение находится в заголовочном файле QPixmap. Объекты класса содержат растровые изображения, не отображая их на экране. При необходимости этот класс можно использовать в качестве промежуточного буфера для рисования, т. е., если требуется нарисовать изображение, то его можно сначала нарисовать в объекте класса QPixmap, а потом, используя объект класса QPainter, скопировать в видимую область. Для создания объекта этого класса в его конструктор нужно передать ширину и высоту. Например:

QPixmap pix(320, 240);

    Глубина цвета в создаваемом объекте класса QPixmap автоматически будет установлена в соответствии с актуальным значением графического режима. Это значение можно узнать с помощью метода QPixmap::defaultDepth(). Файл растрового изображения можно передать прямо в конструктор. Например:

QPixmap pix("Snowleo.jpg");

    Класс QPixmap, как и QImage, предоставляет возможность загрузки данных в формате XPM прямо в конструктор:

#include "image_xpm.h"
...
QPixmap pix(image_xpm);

    Объекты класса QPixmap содержат не сами данные, а их идентификаторы, с помощью которых они могут обратиться к системе. Поэтому прямой доступ к каждому пикселу в отдельности будет очень медленным. В этом случае разумнее будет воспользоваться классом QImage.

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

    Объект класса QPixmap отображается в видимой области с помощью метода QPainter::drawPixmap(). Рассмотрим два разных варианта вызова метода drawPixmap(). В первом варианте указана только позиция, с которой нужно осуществить вывод. Во втором — вывод задается прямоугольной областью, в которой должно отображаться растровое изображение. Результат показан на рис. 1.


Рис.1. Разные способы отображения объекта класса QPixmap

QPainter painter(this);
QPixmap pix("Snowleo.jpg");
painter.drawPixmap(0, 0, pix);
QRect r(0, pix.height(), pix.width(), pix.height() / 2);
painter.drawPixmap(r, pix);

    Файлы приложения можно взять здесь.

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




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