Класс 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)
Это перегруженный метод.
Создаёт пикчер заданного размера.
Предупреждение: Это создаст 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)
Заполняет пикчер заданным цветом.
Эффект этой функции не определён, когда пикчер отрисовывается.
См. также Преобразования пикчера.
[static] QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)
Преобразует заданное изображение image в пиктограмму, используя указанные flags для управления преобразованием. Аргумент flags представляет собой побитовое ИЛИ флагов Qt::ImageConversionFlags. Передача 0 для flags устанавливает все значения по умолчанию.
В случае черно-белых и 8-битных изображений изображение сначала преобразуется в 32-битную пиктограмму, а затем заполняется цветами из таблицы цветов. Если это действие слишком затратно, вы можете использовать QBitmap::fromImage() вместо этого.
См. также fromImageReader(), toImage() и Преобразование пиктограмм.
[static] QPixmap QPixmap::fromImage(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor)
Это перегруженный метод.
Преобразует заданное изображение image в пиктограмму без копирования, если это возможно.
Этот метод был введён в Qt 5.3.
[static] QPixmap QPixmap::fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor)
Создаёт QPixmap из изображения, считываемого непосредственно из imageReader. Аргумент flags представляет собой побитовое ИЛИ флагов Qt::ImageConversionFlags. Передача 0 для flags устанавливает все значения по умолчанию.
На некоторых системах чтение изображения непосредственно в 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.
Загрузчик пытается прочитать пиктограмму, используя указанный format. Если format не указан (что является значением по умолчанию), загрузчик проверяет файл на наличие заголовка, чтобы определить формат файла.
Имя файла может относиться как к фактическому файлу на диске, так и к одному из встроенных ресурсов приложения. См. обзор системы ресурсов для получения подробной информации о том, как встроить пиктограммы и другие файлы ресурсов в исполняемый файл приложения.
Если данные необходимо изменить для соответствия результату с меньшим разрешением (например, при преобразовании из 32-битного в 8-битный), используйте flags для управления преобразованием.
Обратите внимание, что QPixmap автоматически добавляется в QPixmapCache при загрузке из файла в главном потоке; ключ внутренний и не может быть получен.
См. также loadFromData() и Чтение и запись файлов изображений.
bool QPixmap::loadFromData(const uchar *data, uint len, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Загружает пиктограмму из первых len байтов заданных бинарных данных data. Возвращает true если пиктограмма была загружена успешно, в противном случае делает пиктограмму недействительной и возвращает false.
Загрузчик пытается прочитать пиктограмму, используя указанный format. Если format не указан (что является значением по умолчанию), загрузчик проверяет файл на наличие заголовка, чтобы определить формат файла.
Если данные необходимо изменить для соответствия результату с меньшим разрешением (например, при преобразовании из 32-битного в 8-битный), используйте flags для управления преобразованием.
См. также load() и Чтение и запись файлов изображений.
bool QPixmap::loadFromData(const QByteArray &data, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Это перегруженный метод.
Загружает пиктограмму из бинарных данных data, используя указанный format и флаги преобразования flags.
QBitmap QPixmap::mask() const
Извлекает битовую маску из альфа-канала пиктограммы.
Предупреждение: Это может быть дорогостоящая операция. Маска пиктограммы извлекается динамически из данных пикселей.
См. также setMask() и Информация о пиктограммах.
QRect QPixmap::rect() const
Возвращает ограничивающую прямоугольник пиктограммы.
См. также Информация о пиктограммах.
bool QPixmap::save(const QString &fileName, const char *format = nullptr, int quality = -1) const
Сохраняет пиктограмму в файл с заданным именем fileName, используя указанный формат файла изображения format и коэффициент качества quality. Возвращает true при успехе, в противном случае возвращает false.
Коэффициент quality должен быть в диапазоне [0,100] или -1. Укажите 0 для получения небольших сжатых файлов, 100 для больших несжатых файлов и -1 для использования значений по умолчанию.
Если format равен 0, формат изображения будет выбран по расширению fileName.
См. также Чтение и запись файлов изображений.
bool QPixmap::save(QIODevice *device, const char *format = nullptr, int quality = -1) const
Это перегруженный метод.
Этот метод записывает QPixmap в указанный device, используя указанный формат файла изображения format и коэффициент качества quality. Это можно использовать, например, для сохранения пиктограммы непосредственно в 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.
Если width или height равны нулю или отрицательны, функция возвращает пустое растровое изображение.
QPixmap QPixmap::scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает масштабированную копию изображения. Возвращаемое изображение масштабируется до заданной высоты height с использованием указанного режима преобразования mode. Ширина растрового изображения автоматически рассчитывается таким образом, чтобы сохранялось соотношение сторон.
Если height равно 0 или отрицательно, возвращается пустое растровое изображение.
См. также isNull() и Преобразования растровых изображений.
QPixmap QPixmap::scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
Возвращает масштабированную копию изображения. Возвращаемое изображение масштабируется до заданной ширины width с использованием указанного режима преобразования mode. Высота растрового изображения автоматически рассчитывается таким образом, чтобы сохранялось соотношение сторон.
Если width равно 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). Область exposed остается неизменной. Вы можете необязательно передать указатель на пустой QRegion, чтобы получить область, которая exposed в результате операции прокрутки.
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. Установка значения, отличного от 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 и вызывает перегруженный метод.
[static] QTransform QPixmap::trueMatrix(const QTransform &matrix, int width, int height)
Возвращает фактическую матрицу, используемую для преобразования растрового изображения с заданной шириной, высотой и матрицей.
При преобразовании растрового изображения с помощью функции transformed() матрица преобразования внутренне корректируется для компенсации нежелательных сдвигов, т.е. transformed() возвращает наименьшее растровое изображение, содержащее все преобразованные точки исходного растрового изображения. Эта функция возвращает измененную матрицу, которая правильно отображает точки из исходного растрового изображения в новое растровое изображение.
См. также transformed() и Преобразования растровых изображений.
[static] 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 в заданный поток как изображение PNG. Обратите внимание, что запись потока в файл не создаст правильный файл изображения.
См. также QPixmap::save() и Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &stream, QPixmap &pixmap)
Читает изображение из заданного потока в заданный pixmap.
См. также QPixmap::load() и Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qpixmap.html