Класс QPixmap
Класс QPixmap представляет собой изображение вне экрана, которое может использоваться в качестве устройства рисования. Подробнее...
| Заголовок: | #include <QPixmap> |
| qmake: | QT += gui |
| Наследуется от: | QPaintDevice |
| Наследует: |
Открытые функции
| QPixmap() | |
| QPixmap(int width, int height) | |
| QPixmap(const QSize &size) | |
| QPixmap(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor) | |
| QPixmap(const char *const [] xpm) | |
| QPixmap(const QPixmap &pixmap) | |
| virtual | ~QPixmap() |
| QPixmap | alphaChannel() const |
| qint64 | cacheKey() const |
| bool | convertFromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| QPixmap | copy(const QRect &rectangle = QRect()) const |
| QPixmap | copy(int x, int y, int width, int height) const |
| QBitmap | createHeuristicMask(bool clipTight = true) const |
| QBitmap | createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const |
| int | depth() const |
| void | detach() |
| qreal | devicePixelRatio() const |
| void | fill(const QColor &color = Qt::white) |
| bool | hasAlpha() const |
| bool | hasAlphaChannel() const |
| int | height() const |
| bool | isNull() const |
| bool | isQBitmap() const |
| bool | load(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| bool | loadFromData(const uchar *data, uint len, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| bool | loadFromData(const QByteArray &data, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| QBitmap | mask() const |
| QRect | rect() const |
| bool | save(const QString &fileName, const char *format = nullptr, int quality = -1) const |
| bool | save(QIODevice *device, const char *format = nullptr, int quality = -1) const |
| QPixmap | scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const |
| QPixmap | scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const |
| QPixmap | scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const |
| QPixmap | scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const |
| void | scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed = nullptr) |
| void | scroll(int dx, int dy, const QRect &rect, QRegion *exposed = nullptr) |
| void | setAlphaChannel(const QPixmap &p) |
| void | setDevicePixelRatio(qreal scaleFactor) |
| void | setMask(const QBitmap &mask) |
| QSize | size() const |
| void | swap(QPixmap &other) |
| QImage | toImage() const |
| QPixmap | transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const |
| QPixmap | transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const |
| int | width() const |
| QVariant | operator QVariant() const |
| bool | operator!() const |
| QPixmap & | operator=(const QPixmap &pixmap) |
| QPixmap & | operator=(QPixmap &&other) |
- 14 открытых функций, унаследованных от QPaintDevice
Статические открытые члены
| int | defaultDepth() |
| QPixmap | fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| QPixmap | fromImage(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| QPixmap | fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor) |
| QTransform | trueMatrix(const QTransform &matrix, int width, int height) |
| QMatrix | trueMatrix(const QMatrix &m, int w, int h) |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &stream, const QPixmap &pixmap) |
| QDataStream & | operator>>(QDataStream &stream, QPixmap &pixmap) |
Дополнительные унаследованные члены
- 1 защищённая функция, унаследованная от QPaintDevice
Подробное описание
Класс QPixmap — это представление внеэкранного изображения, которое можно использовать в качестве устройства рисования.
Qt предоставляет четыре класса для обработки данных изображений: QImage, QPixmap, QBitmap и QPicture. QImage разработан и оптимизирован для ввода-вывода и прямого доступа к пикселям и их обработки, а QPixmap — для отображения изображений на экране. QBitmap — это лишь удобный класс, наследующий QPixmap, обеспечивающий глубину 1. Функция isQBitmap() возвращает true, если объект QPixmap действительно является битовой картой, в противном случае возвращает false. Наконец, класс QPicture — это устройство рисования, которое записывает и воспроизводит команды QPainter.
QPixmap легко отобразить на экране с помощью QLabel или одного из подклассов QAbstractButton (например, QPushButton и QToolButton). QLabel имеет свойство pixmap, а QAbstractButton — свойство icon.
Объекты QPixmap могут передаваться по значению, так как класс QPixmap использует неявное совместное использование данных. Дополнительную информацию см. в документации по неявному совместному использованию. Объекты QPixmap также могут быть переданы по потоку.
Обратите внимание, что данные пикселей в pixmap являются внутренними и управляются подлежащей системой окон. Поскольку QPixmap является подклассом QPaintDevice, QPainter может использоваться для прямого рисования на pixmap. Доступ к пикселям возможен только через функции QPainter или путём преобразования QPixmap в QImage. Однако функция fill() доступна для инициализации всей pixmap заданным цветом.
Существуют функции для преобразования между QImage и QPixmap. Обычно класс QImage используется для загрузки файла изображения, при необходимости обработки данных изображения, прежде чем объект QImage преобразуется в QPixmap для отображения на экране. В качестве альтернативы, если манипуляции не требуются, файл изображения можно загрузить непосредственно в QPixmap.
QPixmap предоставляет набор функций, которые можно использовать для получения различных сведений об изображении. Кроме того, существуют несколько функций, позволяющих преобразовать pixmap.
Чтение и запись файлов изображений
QPixmap предоставляет несколько способов чтения файла изображения: файл может загружаться при создании объекта QPixmap или с помощью функций load() или loadFromData() позже. При загрузке изображения имя файла может ссылаться на фактический файл на диске или на один из встроенных ресурсов приложения. См. обзор системы ресурсов Qt для получения подробной информации о том, как встроить изображения и другие файлы ресурсов в исполняемый файл приложения.
Просто вызовите функцию save() для сохранения объекта QPixmap.
Полный список поддерживаемых форматов файлов доступен через функции QImageReader::supportedImageFormats() и QImageWriter::supportedImageFormats(). Новые форматы файлов могут быть добавлены как плагины. По умолчанию Qt поддерживает следующие форматы:
| Формат | Описание | Поддержка Qt |
|---|---|---|
| BMP | Windows Bitmap | Чтение/запись |
| GIF | Graphic Interchange Format (необязательно) | Чтение |
| JPG | Joint Photographic Experts Group | Чтение/запись |
| JPEG | Joint Photographic Experts Group | Чтение/запись |
| PNG | Portable Network Graphics | Чтение/запись |
| PBM | Portable Bitmap | Чтение |
| PGM | Portable Graymap | Чтение |
| PPM | Portable Pixmap | Чтение/запись |
| XBM | X11 Bitmap | Чтение/запись |
| XPM | X11 Pixmap | Чтение/запись |
Информация об изображении
QPixmap предоставляет набор функций для получения различной информации об изображении:
| Доступные функции | |
|---|---|
| Геометрия | Функции size(), width() и height() предоставляют информацию о размерах изображения. Функция rect() возвращает ограничивающую прямоугольник изображения. |
| Компонент альфа-канала | Функция hasAlphaChannel() возвращает true, если pixmap имеет формат, поддерживающий альфа-канал, в противном случае возвращает false. Функции hasAlpha(), setMask() и mask() являются устаревшими и не должны использоваться. Они могут быть очень медленными.Функция createHeuristicMask() создаёт и возвращает эвристическую маску 1 бита (т.е. QBitmap) для этого pixmap. Она работает, выбирая цвет из одного из углов, а затем отбрасывая пиксели этого цвета, начиная с краёв. Функция createMaskFromColor() создаёт и возвращает маску (т.е. QBitmap) для изображения на основе заданного цвета. |
| Информация низкого уровня | Функция depth() возвращает глубину pixmap. Функция defaultDepth() возвращает стандартную глубину, то есть глубину, используемую приложением на данном экране. Функция cacheKey() возвращает число, которое однозначно идентифицирует содержимое объекта QPixmap. Функция x11Info() возвращает информацию о конфигурации дисплея X, используемого экраном, к которому в настоящее время относится pixmap. Функция x11PictureHandle() возвращает дескриптор X11 Picture для поддержки XRender. Обратите внимание, что две последние функции доступны только на x11. |
Преобразование изображений
Объект QPixmap можно преобразовать в QImage с помощью функции toImage(). Аналогично, QImage можно преобразовать в QPixmap с помощью функции fromImage(). Если это слишком дорогостоящая операция, можно использовать QBitmap::fromImage() вместо неё.
Для преобразования QPixmap в HICON и обратно можно использовать функции QtWinExtras QtWin::toHICON() и QtWin::fromHICON() соответственно.
Преобразования pixmap
QPixmap поддерживает ряд функций для создания нового pixmap, являющегося преобразованной версией оригинала:
Функции scaled(), scaledToWidth() и scaledToHeight() возвращают масштабированные копии pixmap, а функция copy() создаёт QPixmap, являющуюся простой копией оригинальной.
Функция transformed() возвращает копию pixmap, преобразованную заданной матрицей преобразования и режимом преобразования: внутренне матрица преобразования корректируется для компенсации нежелательного смещения, т.е. transformed() возвращает наименьший pixmap, содержащий все преобразованные точки исходного pixmap. Статическая функция trueMatrix() возвращает фактическую матрицу, используемую для преобразования pixmap.
Примечание: При использовании собственной графической системы X11 pixmap становится недействительным при уничтожении экземпляра QApplication.
См. также QBitmap, QImage, QImageReader и QImageWriter.
Документация по функциям-членам
QPixmap::QPixmap()
Конструктор пустой pixmap.
См. также isNull().
END_OF_DOCUMENT_MARKERQPixmap::QPixmap(int width, int height)
Создаёт пикчуру заданной шириной width и высотой height. Если width или height равны нулю, создаётся пустая пикчура.
Предупреждение: Это создаст QPixmap с неинициализированными данными. Вызовите fill(), чтобы заполнить пикчуру соответствующим цветом перед рисованием на ней с помощью QPainter.
См. также isNull().
QPixmap::QPixmap(const QSize &size)
Это перегруженный метод.
Создаёт пикчуру заданного размера size.
Предупреждение: Это создаст QPixmap с неинициализированными данными. Вызовите fill(), чтобы заполнить пикчуру соответствующим цветом перед рисованием на ней с помощью QPainter.
QPixmap::QPixmap(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Создаёт пикчуру из файла с заданным именем fileName. Если файла не существует или формат неизвестен, пикчура становится пустой.
Загрузчик пытается прочитать пикчуру с помощью указанного формата format. Если format не указан (по умолчанию), загрузчик анализирует заголовок файла, чтобы определить формат.
Имя файла может относиться к фактическому файлу на диске или к одному из встроенных ресурсов приложения. Подробнее о том, как встраивать изображения и другие файлы ресурсов в исполняемый файл приложения, см. обзор Системы ресурсов.
Если изображение необходимо изменить, чтобы оно соответствовало изображению с меньшим разрешением (например, преобразование из 32-битного в 8-битное), используйте flags для управления преобразованием.
Параметры fileName, format и flags передаются в load(). Это означает, что данные в fileName не компилируются в двоичный файл. Если fileName содержит относительный путь (только имя файла), соответствующий файл должен быть найден относительно текущей рабочей директории.
См. также Чтение и запись файлов изображений.
QPixmap::QPixmap(const char *const [] xpm)
Создаёт пикчуру из заданных данных xpm, которые должны быть допустимым изображением XPM.
Ошибки игнорируются.
Обратите внимание, что можно немного сжать переменную XPM, используя необычное объявление:
static const char * const start_xpm[]={
"16 15 8 1",
"a c #cec6bd",
.... Дополнительное const делает всё определение неизменяемым, что немного эффективнее (например, при коде в динамической библиотеке) и позволяет сохранять его в ПЗУ, когда приложение хранится в ПЗУ.
QPixmap::QPixmap(const QPixmap &pixmap)
Создаёт пикчуру, которая является копией заданной pixmap.
См. также copy().
[virtual] QPixmap::~QPixmap()
Уничтожает пикчуру.
QPixmap QPixmap::alphaChannel() const
Большинство случаев использования этого можно добиться с помощью QPainter и QPainter::CompositionMode.
См. также setAlphaChannel().
qint64 QPixmap::cacheKey() const
Возвращает число, которое идентифицирует этот QPixmap. Различные объекты QPixmap могут иметь одинаковый ключ кэша только в том случае, если они ссылаются на одинаковое содержимое.
cacheKey() изменится при изменении пикчуры.
bool QPixmap::convertFromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)
Заменяет данные этой пикчуры заданным image с использованием указанных flags для управления преобразованием. Аргумент flags — побитовое ИЛИ флагов Qt::ImageConversionFlags. Передача 0 для flags устанавливает все значения по умолчанию. Возвращает true если в результате эта пикчура не пуста.
Примечание: эта функция была частью поддержки Qt 3 в Qt 4.6 и ранее. Она получила статус официального API в версии 4.7, чтобы поддержать обновление изображения пикчуры без создания новой QPixmap, как это делала бы функция fromImage().
Эта функция была добавлена в Qt 4.7.
См. также fromImage().
QPixmap QPixmap::copy(const QRect &rectangle = QRect()) const
Возвращает глубокую копию подмножества пикчуры, заданного данным rectangle. Подробнее о глубоких копиях см. документацию Неявное совместное использование данных.
Если заданный rectangle пуст, копируется всё изображение.
См. также operator=(), QPixmap() и Преобразования пикчуры.
QPixmap QPixmap::copy(int x, int y, int width, int height) const
Это перегруженный метод.
Возвращает глубокую копию подмножества пикчуры, заданного прямоугольником QRect( x, y, width, height).
QBitmap QPixmap::createHeuristicMask(bool clipTight = true) const
Создаёт и возвращает эвристическую маску для этой пикчуры.
Функция работает, выбирая цвет из одного из углов и удаляя пиксели этого цвета, начиная с всех краёв. Если clipTight равно true (по умолчанию), маска имеет размер, достаточный для покрытия пикселей; в противном случае, маска больше, чем пиксели данных.
Маска может быть не идеальной, но должна быть разумной, поэтому вы можете сделать следующие вещи:
QPixmap myPixmap; myPixmap.setMask(myPixmap.createHeuristicMask());
Эта функция медленная, потому что она включает преобразование в/из QImage, а также нетривиальные вычисления.
См. также QImage::createHeuristicMask() и createMaskFromColor().
QBitmap QPixmap::createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const
Создаёт и возвращает маску для этой пикчуры на основе заданного maskColor. Если mode равен Qt::MaskInColor, все пиксели, соответствующие maskColor, будут прозрачными. Если mode равен Qt::MaskOutColor, все пиксели, соответствующие maskColor, будут непрозрачными.
Эта функция медленная, потому что она включает преобразование в/из QImage.
См. также createHeuristicMask() и QImage::createMaskFromColor().
[static] int QPixmap::defaultDepth()
Возвращает глубину пикчуры по умолчанию, используемую приложением.
На всех платформах будет возвращена глубина основного экрана.
Примечание: QGuiApplication должен быть создан перед вызовом этой функции.
См. также depth(), QColormap::depth() и Информация о пикчуре.
int QPixmap::depth() const
Возвращает глубину пикчуры.
Глубина пикчуры также называется битами на пиксель (bpp) или битами плоскостей пикчуры. У пустой пикчуры глубина равна 0.
См. также defaultDepth() и Информация о пикчуре.
void QPixmap::detach()
Отсоединяет пикчуру от общих данных пикчуры.
Пикчура автоматически отсоединяется Qt, когда её содержимое собирается измениться. Это выполняется практически во всех методах QPixmap, которые изменяют пикчуру (fill(), fromImage(), load() и т. д.), и в QPainter::begin() на пикчуре.
Есть два исключения, в которых detach() необходимо вызывать явно, то есть при вызове функций handle() или x11PictureHandle() (доступна только на X11). В противном случае любые изменения, выполненные с помощью системных вызовов, будут выполняться на общих данных.
Функция detach() возвращается немедленно, если есть только одна ссылка или если пикчура ещё не инициализирована.
qreal QPixmap::devicePixelRatio() const
Возвращает коэффициент пикселей устройства для пикчуры. Это отношение между пикселями устройства и независимыми от устройства пикселями.
Используйте эту функцию при вычислении геометрии макета на основе размера пикчуры: QSize layoutSize = image.size() / image.devicePixelRatio()
Значение по умолчанию — 1,0.
См. также setDevicePixelRatio() и QImageReader.
void QPixmap::fill(const QColor &color = Qt::white)
Заполняет пикчуру заданным color.
Эффект этой функции не определён, когда пикчура отрисовывается.
См. также Преобразования пикчуры.
[static] QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)
Преобразует заданное изображение в пиксельмапу, используя указанные флаги для управления преобразованием. Аргумент флаги представляет собой побитовое ИЛИ флагов Qt::ImageConversionFlags. Передача 0 для флагов устанавливает все значения по умолчанию.
В случае монохромных и 8-битных изображений, изображение сначала преобразуется в 32-битную пиксельмапу, а затем заполняется цветами из таблицы цветов. Если эта операция слишком затратна, можно использовать QBitmap::fromImage() вместо этого.
См. также fromImageReader(), toImage() и Преобразование пиксельмап.
[static] QPixmap QPixmap::fromImage(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor)
Это перегруженный метод.
Преобразует заданное изображение в пиксельмапу без копирования, если это возможно.
Этот метод был представлен в Qt 5.3.
[static] QPixmap QPixmap::fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor)
Создает QPixmap из изображения, считанного непосредственно из imageReader. Аргумент флаги представляет собой побитовое ИЛИ флагов Qt::ImageConversionFlags. Передача 0 для флагов устанавливает все значения по умолчанию.
В некоторых системах чтение изображения непосредственно в QPixmap может использовать меньше памяти, чем чтение QImage для его преобразования в QPixmap.
См. также fromImage(), toImage() и Преобразование пиксельмап.
bool QPixmap::hasAlpha() const
Возвращает true если эта пиксельмапа имеет альфа-канал или маску, в противном случае возвращает false.
См. также hasAlphaChannel() и mask().
bool QPixmap::hasAlphaChannel() const
Возвращает true если пиксельмапа имеет формат, который учитывает альфа-канал, в противном случае возвращает false.
См. также hasAlpha().
int QPixmap::height() const
Возвращает высоту пиксельмапы.
См. также size() и Информация о пиксельмапе.
bool QPixmap::isNull() const
Возвращает true если это нулевая пиксельмапа; в противном случае возвращает false.
Нулевая пиксельмапа имеет нулевую ширину, нулевую высоту и не содержит данных. В нулевой пиксельмапе нельзя рисовать.
bool QPixmap::isQBitmap() const
Возвращает true если это QBitmap; в противном случае возвращает false.
bool QPixmap::load(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Загружает пиксельмапу из файла с заданным fileName. Возвращает true, если пиксельмапа была успешно загружена; в противном случае делает пиксельмапу недействительной и возвращает false.
Загрузчик пытается прочитать пиксельмапу, используя указанный формат. Если формат не указан (по умолчанию), загрузчик анализирует файл, чтобы определить формат файла.
Имя файла может ссылаться либо на фактический файл на диске, либо на один из встроенных ресурсов приложения. См. обзор системы ресурсов, чтобы узнать, как встроить пиксельмапы и другие файлы ресурсов в исполняемый файл приложения.
Если данные необходимо изменить, чтобы они соответствовали результату с меньшим разрешением (например, преобразование из 32-битного в 8-битный), используйте флаги для управления преобразованием.
Обратите внимание, что QPixmap автоматически добавляются в QPixmapCache при загрузке из файла; используемый ключ внутренний и не может быть получен.
См. также loadFromData() и Чтение и запись файлов изображений.
bool QPixmap::loadFromData(const uchar *data, uint len, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Загружает пиксельмапу из первых len байтов заданных двоичных данных. Возвращает true если пиксельмапа была успешно загружена; в противном случае делает пиксельмапу недействительной и возвращает false.
Загрузчик пытается прочитать пиксельмапу, используя указанный формат. Если формат не указан (по умолчанию), загрузчик анализирует файл, чтобы определить формат файла.
Если данные необходимо изменить, чтобы они соответствовали результату с меньшим разрешением (например, преобразование из 32-битного в 8-битный), используйте флаги для управления преобразованием.
См. также load() и Чтение и запись файлов изображений.
bool QPixmap::loadFromData(const QByteArray &data, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Это перегруженный метод.
Загружает пиксельмапу из двоичных данных, используя указанный формат и флаги преобразования флагов.
QBitmap QPixmap::mask() const
Извлекает битовую маску из альфа-канала пиксельмапы.
Предупреждение: Это потенциально ресурсоёмкая операция. Маска пиксельмапы извлекается динамически из данных пикселей.
См. также setMask() и Информация о пиксельмапе.
QRect QPixmap::rect() const
Возвращает охватывающий прямоугольник пиксельмапы.
См. также Информация о пиксельмапе.
bool QPixmap::save(const QString &fileName, const char *format = nullptr, int quality = -1) const
Сохраняет пиксельмапу в файл с заданным fileName, используя указанный формат файла изображения и коэффициент качества. Возвращает true при успехе; в противном случае возвращает false.
Коэффициент качества должен быть в диапазоне [0,100] или -1. Укажите 0 для получения небольших сжатых файлов, 100 для больших несжатых файлов и -1 для использования значений по умолчанию.
Если формат равен 0, формат изображения будет выбран из суффикса fileName.
См. также Чтение и запись файлов изображений.
bool QPixmap::save(QIODevice *device, const char *format = nullptr, int quality = -1) const
Это перегруженный метод.
Этот метод записывает QPixmap в заданный устройство, используя указанный формат файла изображения и коэффициент качества. Это можно использовать, например, для сохранения пиксельмапы непосредственно в QByteArray:
QPixmap pixmap;
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
pixmap.save(&buffer, "PNG"); // writes pixmap into bytes in PNG format QPixmap QPixmap::scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
Масштабирует пиксельмапу до заданного размера size, используя режим сохранения пропорций и режим преобразования, указанные параметрами aspectRatioMode и transformMode.
- Если aspectRatioMode равен Qt::IgnoreAspectRatio, пиксельмапа масштабируется до size.
- Если aspectRatioMode равен Qt::KeepAspectRatio, пиксельмапа масштабируется до прямоугольника, насколько это возможно внутри size, сохраняя пропорции.
- Если aspectRatioMode равен Qt::KeepAspectRatioByExpanding, пиксельмапа масштабируется до прямоугольника, насколько это возможно вне size, сохраняя пропорции.
Если заданный size пустой, этот метод возвращает нулевую пиксельмапу.
В некоторых случаях может быть выгоднее нарисовать пиксельмапу в рисовальщике с установленным масштабом, а не масштабировать пиксельмапу. Это относится к случаям, когда рисовальщик, например, основан на OpenGL или когда коэффициент масштабирования быстро меняется.
См. также isNull() и Преобразования пиксельмап.
QPixmap QPixmap::scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
Это перегруженный метод.
Возвращает копию пиксельмапы, масштабированной до прямоугольника с заданной шириной и высотой в соответствии с заданным aspectRatioMode и transformMode.
Если ширина или высота равны нулю или отрицательны, этот метод возвращает нулевую пиксельмапу.
QPixmap QPixmap::scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает масштабированную копию изображения. Возвращаемое изображение масштабируется до заданной высоты с использованием указанного режима преобразования mode. Ширина растрового изображения автоматически вычисляется таким образом, чтобы сохранялось соотношение сторон растрового изображения.
Если высота равна 0 или отрицательна, возвращается нулевое растровое изображение.
См. также isNull() и Преобразования растровых изображений.
QPixmap QPixmap::scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает масштабированную копию изображения. Возвращаемое изображение масштабируется до заданной ширины с использованием указанного режима преобразования mode. Высота растрового изображения автоматически вычисляется таким образом, чтобы сохранялось соотношение сторон растрового изображения.
Если ширина равна 0 или отрицательна, возвращается нулевое растровое изображение.
См. также isNull() и Преобразования растровых изображений.
void QPixmap::scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed = nullptr)
Эта вспомогательная функция эквивалентна вызову QPixmap::scroll(dx, dy, QRect(x, y, width, height), exposed).
Эта функция была добавлена в Qt 4.6.
См. также QWidget::scroll() и QGraphicsItem::scroll().
void QPixmap::scroll(int dx, int dy, const QRect &rect, QRegion *exposed = nullptr)
Прокручивает область rect этого растрового изображения на (dx, dy). Область видимых изменений остается неизменной. Вы можете передать указатель на пустой QRegion, чтобы получить область, которая изменяется в результате операции прокрутки.
QPixmap pixmap("background.png");
QRegion exposed;
pixmap.scroll(10, 10, pixmap.rect(), &exposed); Невозможно выполнить прокрутку, когда на растровом изображении активен объект рисования.
Эта функция была добавлена в Qt 4.6.
См. также QWidget::scroll() и QGraphicsItem::scroll().
void QPixmap::setAlphaChannel(const QPixmap &p)
Большинство случаев использования этого метода можно реализовать с помощью p с QPainter и QPainter::CompositionMode вместо этого.
См. также alphaChannel().
void QPixmap::setDevicePixelRatio(qreal scaleFactor)
Устанавливает коэффициент пикселей устройства для растрового изображения. Это отношение между пикселями изображения и независимыми от устройства пикселями.
Значение по умолчанию для scaleFactor — 1.0. Установка его на другое значение имеет два эффекта:
QPainters, открытые на растровом изображении, будут масштабированы. Например, рисование на изображении 200x200 с коэффициентом 2.0 приведет к эффективным (независимым от устройства) границам рисования 100x100.
В Qt пути кода, вычисляющие размеры макета на основе размера растрового изображения, учтут этот коэффициент: QSize layoutSize = pixmap.size() / pixmap.devicePixelRatio() Конечный эффект заключается в том, что растровое изображение отображается как изображение высокой плотности пикселей, а не как большое растровое изображение (см. Рисование версий растровых изображений и изображений высокой четкости).
См. также devicePixelRatio().
void QPixmap::setMask(const QBitmap &mask)
Устанавливает маску растрового изображения.
Эта функция объединяет mask с альфа-каналом растрового изображения. Значение пикселя 1 в маске означает, что пиксель растрового изображения не изменяется; значение 0 означает, что пиксель прозрачный. Маска должна иметь тот же размер, что и это растровое изображение.
Установка нулевой маски сбрасывает маску, оставляя ранее прозрачные пиксели чёрными. Эффект этой функции не определён, когда на растровое изображение наносится рисование.
Предупреждение: Эта операция может быть ресурсоёмкой.
См. также mask(), Преобразования растровых изображений и QBitmap.
QSize QPixmap::size() const
Возвращает размер растрового изображения.
См. также width(), height() и Информация о растровом изображении.
void QPixmap::swap(QPixmap &other)
Меняет местами растровое изображение other с этим растровым изображением. Эта операция очень быстрая и никогда не завершается ошибкой.
Эта функция была добавлена в Qt 4.8.
QImage QPixmap::toImage() const
Преобразует растровое изображение в QImage. Возвращает нулевое изображение, если преобразование завершилось ошибкой.
Если растровое изображение имеет 1-битовую глубину, возвращаемое изображение также будет 1-битовым. Изображения с большим количеством битов будут возвращены в формате, близком к представлению в системе. Обычно это будет QImage::Format_ARGB32_Premultiplied для растровых изображений с альфа-каналом и QImage::Format_RGB32 или QImage::Format_RGB16 для растровых изображений без альфа-канала.
Обратите внимание, что на данный момент маски альфа-канала для монохромных изображений игнорируются.
См. также fromImage() и Форматы изображений.
QPixmap QPixmap::transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает копию растрового изображения, преобразованную с использованием заданного преобразования transform и режима преобразования mode. Исходное растровое изображение не изменяется.
Преобразование transform внутренне корректируется для компенсации нежелательного смещения; т.е. возвращаемое растровое изображение — это наименьшее растровое изображение, содержащее все преобразованные точки исходного растрового изображения. Используйте функцию trueMatrix() для получения фактической матрицы, используемой для преобразования растрового изображения.
Эта функция медленная, так как включает преобразование в QImage, нетривиальные вычисления и преобразование обратно в QPixmap.
См. также trueMatrix() и Преобразования растровых изображений.
QPixmap QPixmap::transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const
Это перегруженная функция.
Эта вспомогательная функция загружает matrix в QTransform и вызывает перегруженную функцию.
QTransform QPixmap::trueMatrix(const QTransform &matrix, int width, int height)
Возвращает фактическую матрицу, используемую для преобразования растрового изображения с заданной шириной, высотой и matrix.
При преобразовании растрового изображения с помощью функции transformed() матрица преобразования внутренне корректируется для компенсации нежелательного смещения, т.е. transformed() возвращает наименьшее растровое изображение, содержащее все преобразованные точки исходного растрового изображения. Эта функция возвращает изменённую матрицу, которая правильно отображает точки из исходного растрового изображения в новое.
См. также transformed() и Преобразования растровых изображений.
QMatrix QPixmap::trueMatrix(const QMatrix &m, int w, int h)
Это перегруженная функция.
Эта вспомогательная функция загружает матрицу m в QTransform и вызывает перегруженную функцию с QTransform и шириной w и высотой h.
int QPixmap::width() const
Возвращает ширину растрового изображения.
См. также size() и Информация о растровом изображении.
QVariant QPixmap::operator QVariant() const
Возвращает растровое изображение как QVariant.
bool QPixmap::operator!() const
Возвращает true , если это нулевое растровое изображение; в противном случае возвращает false.
См. также isNull().
QPixmap &QPixmap::operator=(const QPixmap &pixmap)
Присваивает заданное pixmap этому растровому изображению и возвращает ссылку на это растровое изображение.
QPixmap &QPixmap::operator=(QPixmap &&other)
Присваивает other этому экземпляру QPixmap.
Эта функция была добавлена в Qt 5.2.
Связанные нечлены
QDataStream &operator<<(QDataStream &stream, const QPixmap &pixmap)
Записывает заданный pixmap в заданный stream в формате PNG. Обратите внимание, что запись потока в файл не создаст корректный файл изображения.
См. также QPixmap::save() и Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &stream, QPixmap &pixmap)
Считывает изображение из заданного stream в заданный pixmap.
См. также QPixmap::load() и Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qpixmap.html