QPixmap类

The QPixmap class is an off-screen image representation that can be used as a paint device. More...

头文件 #include <QPixmap>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承 QPaintDevice
继承自

QBitmap

公共函数

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)
QPixmap(QPixmap &&other)
virtual~QPixmap()
qint64cacheKey() const
boolconvertFromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)
QPixmapcopy(const QRect &rectangle = QRect()) const
QPixmapcopy(int x, int y, int width, int height) const
QBitmapcreateHeuristicMask(bool clipTight = true) const
QBitmapcreateMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const
intdepth() const
voiddetach()
(since 6.2) QSizeFdeviceIndependentSize() const
qrealdevicePixelRatio() const
voidfill(const QColor &color = Qt::white)
boolhasAlpha() const
boolhasAlphaChannel() const
intheight() const
boolisNull() const
boolisQBitmap() const
boolload(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
boolloadFromData(const uchar *data, uint len, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
boolloadFromData(const QByteArray &data, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
QBitmapmask() const
QRectrect() const
bool保存(const QString &fileName, const char *format = nullptr, int quality = -1) const
bool保存(QIODevice *device, const char *format = nullptr, int quality = -1) const
QPixmap缩放(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
QPixmap缩放(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
QPixmap缩放高度(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
QPixmap缩放宽度(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
void滚动(int dx, int dy, int x, int y, int width, int height, QRegion *exposed = nullptr)
void滚动(int dx, int dy, const QRect &rect, QRegion *exposed = nullptr)
void设置设备像素比(qreal scaleFactor)
void设置遮罩(const QBitmap &mask)
QSize大小() const
void交换(QPixmap &other)
QImage转换为图像() const
QPixmap转换(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const
int宽度() const
QVariant转换为长整型() const
bool取反() const
QPixmap &赋值(const QPixmap &pixmap)
QPixmap &赋值(QPixmap &&other)

静态公共成员

int默认深度()
QPixmap从图像创建(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)
QPixmap从图像创建(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor)
QPixmap从图像读取器创建(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor)
QTransform真实矩阵(const QTransform &matrix, int width, int height)
QDataStream &输入流操作符(QDataStream &stream, const QPixmap &pixmap)
QDataStream &输出流操作符(QDataStream &stream, QPixmap &pixmap)

详细描述

Qt提供了四个用于处理图像数据的类:QImage、QPixmap、QBitmap和QPicture。QImage是为I/O、直接像素访问和处理而设计和优化的,而QPixmap是为在屏幕上显示图像而设计和优化的。QBitmap是一个便利类,继承自QPixmap,确保深度为1。函数isQBitmap()如果QPixmap对象确实是一个位图,则返回真,否则返回假。最后,QPicture类是一个记录和回放QPainter命令的绘图设备。

A QPixmap 可以通过 QLabelQAbstractButton 的子类(例如 QPushButtonQToolButton)在屏幕上轻松显示。QLabel 有一个 pixmap 属性,而 QAbstractButton 有一个图标属性。

由于 QPixmap 类使用隐式数据共享,因此可以按值传递 QPixmap 对象。有关更多信息,请参阅 隐式数据共享 文档。QPixmap 对象还可以进行流式处理。

请注意, pixmap 中的像素数据是内部的,并由底层窗口系统管理。由于 QPixmap 是 QPaintDevice 子类,因此可以使用 QPainter 直接在 pixmap 上绘制。像素只能通过 QPainter 函数或通过将 QPixmap 转换为 QImage 来访问。然而,fill() 函数可用于使用给定颜色初始化整个 pixmap。

存在相互转换 QImage 和 QPixmap 的函数。通常,使用 QImage 类加载图像文件,可选地操作图像数据,然后将 QImage 对象转换为 QPixmap 以在屏幕上显示。或者,如果不需要操作,可以直接将图像文件加载到 QPixmap。

QPixmap 提供了一组可用于获取 pixmap 多种信息的函数。此外,还有一些函数可以实现 pixmap 的转换。

读取和写入图像文件

QPixmap 提供了多种读取图像文件的方式:在构造 QPixmap 对象时加载文件,或使用 load() 或 loadFromData() 函数。当加载图像时,文件名可以指的是磁盘上的实际文件,也可以是指应用程序的嵌入资源。有关如何将图像和其他资源文件嵌入到应用程序的可执行文件中的详细信息,请参阅 Qt 资源系统 概述。

只需要调用 save() 函数即可保存 QPixmap 对象。

支持的完整文件格式列表可通过 QImageReader::supportedImageFormats() 和 QImageWriter::supportedImageFormats() 函数获得。可以通过插件添加新的文件格式。默认情况下,Qt 支持以下格式

格式描述Qt 的支持
BMPWindows 位图读写
GIF图形交换格式(可选)
JPG联合图像专家组读写
JPEG联合图像专家组读写
PNG便携式网络图形读写
PBM便携式位图
PGM便携式灰度图
PPM便携式 pixmap读写
XBMPX11 位图读写
XPMX11 pixmap读写

Pixmap 信息

QPixmap 提供了一组可用于获取 pixmap 多种信息的函数

可用函数
几何形状size(),width() 和 height() 函数提供关于 pixmap 大小的信息。函数 rect() 返回图像的包围矩形。
Alpha 成分hasAlphaChannel() 函数返回 true,如果Pixmap的格式支持Alpha通道,否则返回 false。函数 hasAlpha()、setMask() 和 mask() 已经是废弃的,不应再使用。它们可能会非常慢。

createHeuristicMask() 函数创建并返回一个1-bpp启发式掩码(即 QBitmap),适用于这个Pixmap。其工作原理是从一个角落中选择一个颜色,然后从所有边缘开始移除该颜色的像素。函数 createMaskFromColor() 根据给定颜色创建并返回针对Pixmap的掩码(即 QBitmap)。

低级别信息depth() 函数返回Pixmap的深度。函数 defaultDepth() 返回默认深度,即应用程序在指定屏幕上使用的深度。

cacheKey() 函数返回一个唯一标识 QPixmap 对象内容的数字。

Pixmap转换

可以使用 toImage() 函数将 QPixmap 对象转换为 QImage。同样,可以使用 fromImage() 将 QImage 转换为 QPixmap。如果这个操作的成本太高,可以使用 QBitmap::fromImage() 代替。

要将 QPixmap 转换为 HICON 并从 HICON 转换回来,可以使用 QImage::toHICON() 和 QImage::fromHICON() 函数分别(如上所述,在将 QPixmap 转换为 QImage 后)。

Pixmap变换

QPixmap支持多个函数,用于创建新的Pixmap,该Pixmap是原始Pixmap的变换版本

scaled()、scaledToWidth() 和 scaledToHeight() 函数返回Pixmap的缩放副本,而 copy() 函数创建一个与原始Pixmap完全相同的 QPixmap。

transformed() 函数返回一个副本的Pixmap,它使用给定的变换矩阵和变换模式进行了变换:内部,变换矩阵被调整为补偿不需要的平移,即 transformed() 返回包含原始Pixmap所有变换点最小的Pixmap。静态函数 trueMatrix() 返回用于变换Pixmap的实际矩阵。

另请参阅QBitmapQImageQImageReaderQImageWriter

成员函数文档

QPixmap::QPixmap()

构造一个空的Pixmap。

另请参阅isNull

QPixmap::QPixmap(int width, int height)

构造具有给定 widthheight 的Pixmap。如果 widthheight 中的任何一个为零,则构造一个空Pixmap。

警告:这将创建一个具有未初始化数据的Pixmap。在用 QPainter 绘制之前,请调用 fill() 以用适当的颜色填充Pixmap。

另请参阅isNull

[显式] QPixmap::QPixmap(const QSize &size)

这是一个重载的函数。

构造给定大小 size 的 pixmap。

警告:这将创建一个具有未初始化数据的Pixmap。在用 QPainter 绘制之前,请调用 fill() 以用适当的颜色填充Pixmap。

QPixmap::QPixmap(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)

从给定 fileName 的文件中构造 pixmap。如果文件不存在或格式未知,则 pixmap 为空 pixmap。

加载器尝试使用指定的 format 读取 pixmap。如果未指定 format(这是默认情况),加载器将检查文件头以猜测文件格式。

文件名可以指向磁盘上的实际文件或指向应用程序的嵌入资源之一。有关如何在应用程序的可执行文件中嵌入图像和其他资源文件,请参阅资源系统概述中的详细信息。

如果需要修改图像以适应较低分辨率的输出(例如,从32位转换为8位),则使用 flags 控制转换。

fileNameformatflags 参数将传递给 load()。这意味着 fileName 中的数据未编译到二进制中。如果 fileName 包含相对路径(例如,只有文件名),则相关文件必须在运行时的当前工作目录中找到。

另请参阅读取和写入图像文件

[显式] QPixmap::QPixmap(const char *const[] xpm)

从给定 xpm 数据中构造 pixmap,这些数据必须是一个有效的 XPM 图像。

错误将静默忽略。

请注意,可以通过使用不寻常的声明稍微挤压 XPM 变量

static const char * const start_xpm[] = {
    "16 15 8 1",
    "a c #cec6bd",
    // etc.
};

额外的 const 使整个定义只读,这稍微更高效(例如,当代码在共享库中时)并且在应用程序要存储在 ROM 中时可 ROM 化。

QPixmap::QPixmap(const QPixmap &pixmap)

构造一个复制的 pixmap,该 pixmap 由给定 pixmap 确定。

另请参阅copy

[noexcept] QPixmap::QPixmap(QPixmap &&other)

other 中移动构造 QPixmap 实例。

另请参阅swap() 和 operator=(QPixmap&&)。

[virtual noexcept] QPixmap::~QPixmap()

销毁 pixmap。

qint64 QPixmap::cacheKey() const

返回一个标识别定此 QPixmap。不同的 QPixmap 对象仅在它们引用相同内容的情况下才能具有相同的缓存键。

当 pixmap 被更改时,cacheKey() 将更改。

bool QPixmap::convertFromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)

使用指定的 标志 来控制转换,用给定的 图像 替换此位图的/data。 标志 参数是Qt::ImageConversionFlags 的按位或。当 标志 为0时,设置所有默认选项。如果结果为非空此位图,则返回 true

注意:该函数是Qt 4.6及以前Qt 3的兼容部分。从4.7版开始提升为官方API状态,以支持更新位图图像,而不创建新的QPixmap(如fromImage()所做)。

另请参阅 fromImage

QPixmap QPixmap::copy(const QRect &rectangle = QRect()) const

返回由给定 矩形 指定的位图子集的深拷贝。有关深拷贝的更多信息,请参阅隐式数据共享文档。

如果给定的 矩形 为空,则复制整个图像。

另请参阅 operator=QPixmap 以及 Pixmap Transformations

QPixmap QPixmap::copy(int x, int y, int width, int height) const

这是一个重载的函数。

返回由矩形 QRect ( xy) 指定的像素子集的深拷贝。

QBitmap QPixmap::createHeuristicMask(bool clipTight = true) const

为此位图创建并返回一个启发式遮罩。

该函数通过对一个角落选择一个颜色,然后从所有边缘开始移除该颜色的像素来实现。如果 clipTight 为真(默认值),则遮罩仅覆盖像素;否则,遮罩大于数据像素。

遮罩可能不是完美的,但应该是合理的,因此您可以执行以下操作

QPixmap myPixmap;
myPixmap.setMask(myPixmap.createHeuristicMask());

此函数较慢,因为它涉及到将 QImage 转换为/从,以及非平凡的运算。

另请参阅 QImage::createHeuristicMask() 和 createMaskFromColor

QBitmap QPixmap::createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const

基于给定的 maskColor 创建并返回一个遮罩。如果 modeQt::MaskInColor,则所有匹配 maskColor 的像素将是透明的。如果 modeQt::MaskOutColor,则所有匹配 maskColor 的像素将是完全不透明的。

此函数较慢,因为它涉及到将 QImage 转换为/从。

另请参阅 createHeuristicMask() 和 QImage::createMaskFromColor

[静态] int QPixmap::defaultDepth()

返回应用程序使用的默认图深度。

在所有平台上,将返回主屏幕的深度。

注意: QGuiApplication必须在调用此函数之前创建。

另请参阅 depth(),QColormap::depth(),以及Pixmap Information

int QPixmap::depth() const

返回图深的值。

图深度也称为每像素比特数(bpp)或图的位平面。空像素具有深度0。

另请参阅 defaultDepth()和Pixmap Information

void QPixmap::detach()

将图从共享图数据中分离。

当图的内容将要更改时,Qt会自动分离图。这几乎在所有修改图的成员函数中都会进行(如fill(),fromImage(),load()等),以及在图上的QPainter::begin()中。

有两次异常情况必须显式调用detach(),即在调用handle()或x11PictureHandle()函数时(仅在X11上可用)。否则,使用系统调用进行的任何修改将作用于共享数据。

如果只有一个引用或图尚未初始化,则detach()函数将立即返回。

[自 6.2] QSizeF QPixmap::deviceIndependentSize() const

以设备无关像素为单位返回图的大小。

使用用户界面大小计算时,应使用此值。

返回值等同于 pixmap.size() / pixmap.devicePixelRatio

此函数是在Qt 6.2中引入的。

qreal QPixmap::devicePixelRatio() const

返回图的设备像素比率。这是设备像素设备无关像素之间的比率。

当根据图大小计算布局几何形状时,请使用此函数:QSize layoutSize = image.size() / image.devicePixelRatio()

默认值为1.0。

另请参阅 setDevicePixelRatio()和QImageReader

void QPixmap::fill(const QColor &color = Qt::white)

使用指定的颜色填充图。

当图正在绘画时,此函数的效果是未定义的。

另请参阅 Pixmap Transformations

[静态] QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)

使用指定的 标志 控制转换,将给定的 图像 转换为位图。标志参数是 Qt::ImageConversionFlags 的按位或。如果 标志 为 0,则设置所有默认选项。

对于单色和 8 位图像,图像首先转换为 32 位位图,然后使用调色板中的颜色填充。如果此操作过于昂贵,您可以改用 QBitmap::fromImage

另请参阅 fromImageReadertoImage位图转换

[静态] QPixmap QPixmap::fromImage(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor)

这是一个重载的函数。

如果可能,将给定的 图像 转换为位图而不进行复制。

[静态] QPixmap QPixmap::fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor)

从图像读取器直接读取图像以创建 QPixmap。标志参数是 Qt::ImageConversionFlags 的按位或。如果标志参数为 0,则设置所有默认选项。

在某些系统上,直接读取图像到 QPixmap 可能比读取 QImage 转换为 QPixmap 使用更少的内存。

另请参阅 fromImagetoImage位图转换

bool QPixmap::hasAlpha() const

如果此位图具有通道alpha,或具有掩码,则返回 true,否则返回 false

另请参阅 hasAlphaChannel() 和 mask

bool QPixmap::hasAlphaChannel() const

如果位图具有支持alpha通道的格式,则返回 true,否则返回 false

另请参阅 hasAlpha

int QPixmap::height() const

返回位图的高度。

另请参阅 size() 和 位图信息

bool QPixmap::isNull() const

如果这是空位图,则返回 true;否则返回 false

空位图的宽度为零,高度为零,内容为零。您不能在空位图中绘图。

bool QPixmap::isQBitmap() const

如果这是 QBitmap,则返回 true;否则返回 false

bool QPixmap::load(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)

从指定的文件名 fileName 加载位图。如果位图加载成功,则返回 true;否则,使位图无效并返回 false

加载器尝试使用指定的 format 读取 pixmap。如果未指定 format(这是默认情况),加载器将检查文件头以猜测文件格式。

文件名可以指向磁盘上的实际文件,也可以指向应用程序的嵌入资源之一。有关如何在应用程序的可执行文件中嵌入位图和其他资源文件的详细信息,请参阅 资源系统 概述。

如果需要修改数据以适应较低的分辨率结果(例如,从32位转换为8位),请使用 flags 控制转换。

注意,当从主线程文件加载位图时,QPixmap 会自动添加到 QPixmapCache;用于的键是内部的,无法获得。

另请参阅loadFromData() 和 读写图像文件

bool QPixmap::loadFromData(const uchar *data, uint len, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)

从给定的二进制 data 的前 len 个字节加载位图。如果位图加载成功,则返回 true;否则,使位图无效并返回 false

加载器尝试使用指定的 format 读取 pixmap。如果未指定 format(这是默认情况),加载器将检查文件头以猜测文件格式。

如果需要修改数据以适应较低的分辨率结果(例如,从32位转换为8位),请使用 flags 控制转换。

另请参阅load() 和 读写图像文件

bool QPixmap::loadFromData(const QByteArray &data, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)

这是一个重载的函数。

使用指定的 format 和转换 flags 从二进制 data 加载位图。

QBitmap QPixmap::mask() const

从位图的颜色通道中提取位图掩码。

注意:这可能是开销较大的操作。位图的掩码是从像素数据动态提取的。

另请参阅setMask() 和 位图信息

QRect QPixmap::rect() const

返回位图的外接矩形。

另请参阅位图信息

bool QPixmap::save(const QString &fileName, const char *format = nullptr, int quality = -1) const

使用指定的图像文件 formatquality 因子将位图保存到具有给定 fileName 的文件中。如果成功,则返回 true;否则返回 false

quality 因子必须在 [0,100] 范围内或 -1。指定 0 以获得小型压缩文件,100 对于大型未压缩文件,-1 使用默认设置。

如果 formatnullptr,则将从 fileName 的后缀中选择图像格式。

另请参阅读取和写入图像文件

bool QPixmap::save(QIODevice *device, const char *format = nullptr, int quality = -1) const

这是一个重载的函数。

此函数使用指定的图像文件格式质量因素,将QPixmap写入给定的设备。这可以用于,例如,直接将 pixmap 保存到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

根据由aspectRatioModetransformMode指定的纵横比和变换模式,将 pixmap 缩放到给定的大小

  • 如果aspectRatioModeQt::IgnoreAspectRatio,则 pixmap 会被缩放到大小
  • 如果aspectRatioModeQt::KeepAspectRatio,则 pixmap 会被缩放到尽可能大的矩形中,但保留大小内的纵横比。
  • 如果aspectRatioModeQt::KeepAspectRatioByExpanding,则 pixmap 会被缩放到尽可能小的矩形中,但保持纵横比,超出大小

如果给定的大小是空的,这个函数将返回一个空 pixmap。

在某些情况下,将 pixmap 绘制到设置缩放的画家而不是缩放 pixmap 可能更有益。当画家是基于 OpenGL 或缩放因子快速变化时,这种情况会出现。

另请参阅isNull() 和 Pixmap 变换

QPixmap QPixmap::scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const

这是一个重载的函数。

返回一个缩放后的 pixmap 的副本,其大小是根据给定的宽度和高度按照给定的纵横比模式变换模式计算的。

如果宽度和高度中的任何一个为零或负数,这个函数将返回一个空 pixmap。

QPixmap QPixmap::scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const

返回一个缩放后的图像副本。返回的图像是使用指定的变换模式缩放到给定的高度的。pixmap 的宽度会自动计算,以保证 pixmap 的纵横比。

如果高度为 0 或负数,将返回一个空 pixmap。

另请参阅isNull() 和 Pixmap 变换

QPixmap QPixmap::scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const

返回一个缩放后的图像副本。返回的图像是按照指定的变换模式缩放到给定的宽度的。pixmap 的高度会自动计算,以保证 pixmap 的纵横比。

如果宽度为 0 或负数,将返回一个空 pixmap。

另请参阅isNull() 和 Pixmap 变换

void QPixmap::scroll(int dx, int dy, int x, int y, int 宽度, int 高度, QRegion *暴露 = nullptr)

此便利函数等同于调用 QPixmap::scroll(dx, dy, QRect(x, y, 宽度, 高度), 暴露).

另请参阅QWidget::scroll() 和 QGraphicsItem::scroll().

void QPixmap::scroll(int dx, int dy, const QRect &矩形, QRegion *暴露 = nullptr)

通过 (dx, dy) 滚动此位图的 矩形 区域。暴露区域保持不变。您可以可选地传递一个空的 QRegion 指针以获取滚动操作暴露的 暴露 区域。

QPixmap pixmap("background.png");
QRegion exposed;
pixmap.scroll(10, 10, pixmap.rect(), &exposed);

在位图上有活动的画家时不能滚动。

另请参阅QWidget::scroll() 和 QGraphicsItem::scroll().

void QPixmap::setDevicePixelRatio(qreal scaleFactor)

设置位图的设备像素缩放比。这是图像像素和设备无关像素之间的比例。

默认的 scaleFactor 是 1.0。将其设置为其它的两个效果是

在位图上打开的 QPainters 将被缩放。例如,如果在 200x200 的图像上以 2.0 的比例绘制,则结果将是 100x100 的有效(设备无关)绘制边界。

Qt 中根据位图大小计算布局几何形状的代码路径将考虑该比例:QSize layoutSize = pixmap.size() / pixmap.devicePixelRatio()。这种效果的净结果是位图以高DPI位图的形式显示,而不是大型位图(请参阅 绘制高分辨率位图和图像版本)。

另请参阅devicePixelRatio() 和 deviceIndependentSize().

void QPixmap::setMask(const QBitmap &mask)

设置掩码位图。

此函数将 mask 与位图的alpha通道合并。掩码中的像素值 1 表示位图的像素保持不变;值为 0 表示像素是透明的。掩码的大小必须与此位图相同。

设置空掩码将重置掩码,使先前透明的像素变为黑色。当在位图上绘画时,此函数的效果是未定义的。

注意:这可能是一次昂贵的操作。

另请参阅mask()、Pixmap 变换QBitmap

QSize QPixmap::size() const

返回位图的大小。

另请参阅width()、height() 和 Pixmap 信息

[noexcept] void QPixmap::swap(QPixmap &other)

与当前位图交换 other 位图。此操作非常快且永远不会失败。

QImage QPixmap::toImage() const

将像素绘图转换为QImage。如果转换失败,则返回空图像。

如果像素绘图有1位深度,则返回的图像也将是1位深度。更多位的图像将以最接近底层系统的格式返回。通常对于带有alpha通道的像素绘图是QImage::Format_ARGB32_Premultiplied,对于没有alpha通道的像素绘图是QImage::Format_RGB32QImage::Format_RGB16

注意,目前对于单色图像,忽略alpha蒙版。

另请参阅fromImage()和图像格式

QPixmap QPixmap::transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const

返回一个副本的像素绘图,它使用给定的变换transform和变换mode来变换。原始像素绘图不改变。

变换transform在内部调整以补偿不希望的平移;即生成的像素绘图是最小的像素绘图,包含原始像素绘图的所有变换点。使用trueMatrix()函数检索用于变换像素的实际矩阵。

此函数速度较慢,因为它涉及到将像素绘图转换成QImage,进行非平凡的计算,并将像素绘图转换回QPixmap

另请参阅trueMatrix()和像素变换

[静态] QTransform QPixmap::trueMatrix(const QTransform &matrix, int width, int height)

返回用于以给定widthheightmatrix变换像素的实际矩阵。

使用transformed()函数变换像素时,变换矩阵在内部调整以补偿不希望的平移,即transformed()返回包含原始像素绘图所有变换点的最小像素绘图。此函数返回修改后的矩阵,它将原始像素绘图中的点正确映射到新像素绘图。

另请参阅transformed()和像素变换

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 分配给此 pixmap 并返回对此 pixmap 的引用。

另请参阅复制() 和 QPixmap

[noexcept] QPixmap &QPixmap::operator=(QPixmap &&other)

other 移赋给此 QPixmap 实例。

相关非成员

QDataStream &operator<<(QDataStream &stream, const QPixmap &pixmap)

将给定的 pixmap 写入给定的 stream 作为 PNG 图像。请注意,将流写入文件不会生成有效的图像文件。

另请参阅QPixmap::save() 和 序列化 Qt 数据类型

QDataStream &operator>>(QDataStream &stream, QPixmap &pixmap)

从给定的 stream 读取图像到给定的 pixmap

另请参阅QPixmap::load() 和 序列化 Qt 数据类型

© 2024 The Qt Company Ltd. 以下文档贡献的版权属于各自的拥有者。本提供的文档根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权。Qt 及相关标志是 The Qt Company Ltd. 在芬兰和其他国家/地区的商标。所有其他商标均为其各自的拥有者的财产。