QPixmap类

QPixmap类是一种可用作绘制设备,基于屏幕的图像表示形式。


Header:#include <QPixmap>
CMake:find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake:QT += gui
Inherits:<<< QPaintDevice
Inherited By:

QBitmap


详细描述>>>


【公有函数】

QPixmap()
构造一个空位图。
QPixmap(int width, int height)

用给定的宽度和高度构造一个位图。如果宽度或高度为零,则构造一个空位图。

警告:这将创建一个带有未初始化数据的QPixmap,请调用 fill() 用适当的颜色填充像素图,然后用QPainter绘制。

QPixmap(const QSize &size)
构建给定size大小的位图。【警告同上】
QPixmap(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)

从给定文件名fileName构建一个位图。如果文件不存在或格式未知,位图将变为空位图。

加载程序试图使用指定的format格式读取位图。如果没有指定格式(默认),加载程序会在文件中搜索文件头以猜测文件格式。

文件名可以引用磁盘上的实际文件,也可以引用应用程序的一个嵌入资源。有关在程序的可执行文件中嵌入图像和其他资源文件的详细信息,参见Resource System

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

参数 fileNameformat 和 flags被传递给load(),这意味着fileName中的数据不会编译成二进制文件,如果fileName包含相对路径(例如仅文件名),则相关文件路径必须相对于“运行时”的工作目录。

QPixmap(const char *const [] xpm)

从给定的xpm数据构建一个位图,该数据必须是有效的XPM图像。错误会被忽略。

注意:可以通过使用一个与众不同的声明(unusual declaration)来压缩XPM变量,示例如下:

额外的 const 使整个定义都是只读的,这样会稍微提高效率(例如,当代码位于共享库中时),并且当应用程序存储在ROM中时是可扩展的。

QPixmap(const QPixmap &pixmap)
构建一个给定位图 pixmap 的副本。
QPixmap(QPixmap &&other)
从 other 实例移动构造一个QPixmap。
virtual~QPixmap()
qint64cacheKey() const
返回标识此QPixmap的一个数字(cache key)。如果不同的QPixmap对象引用相同的内容,则具有相同的缓存键。 当位图改变时, cacheKey() 也会改变。
boolconvertFromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)

使用指定的标志flags控制转换,用给定的图像 image 替换此位图的数据。

flags参数是Qt::ImageConversionFlags的位或(bitwise-OR)运算。为 flags传递0将设置所有默认选项。如果结果是该位图不为空,则返回true。

QPixmapcopy(const QRect &rectangle = QRect()) const

返回由给定矩形rectangle指定的位图子集的深拷贝。深拷贝参见隐式数据共享Implicit Data Sharing

如果给定的rectangle为空则复制整个图像。

QPixmapcopy(int x, int y, int width, int height) const
返回由QRectxywidthheight)指定的位图子集的深拷贝。
QBitmapcreateHeuristicMask(bool clipTight = true) const

创建并返回该位图的启发式掩码。

该功能的工作原理是从一个角上选择一种颜色,然后从所有边缘开始削去该颜色的像素。如果 clipTight 为true(默认值),则遮罩的大小刚好能够覆盖像素;否则,掩码大于数据像素。mask可能并不完美,但它应该是合理的,所以你可以这样做:

这个函数很慢,因为它涉及与QImage之间的转换和重要计算。

QBitmapcreateMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const
基于maskColor创建并返回该位图的遮罩。如果模式为Qt::MaskInColor,则与maskColor匹配的所有像素都将是透明的。如果模式为Qt::MaskOutColor,则与maskColor匹配的所有像素都将是不透明的。 这个函数很慢,因为它涉及到与QImage之间的转换。
intdepth() const
返回位图的深度。 像素图深度也称为每像素位数(bpp)或像素图的位平面。空位图深度为0。
voiddetach()

从共享的位图数据中分离位图。

每当位图的内容将要改变时,Qt会自动分离位图。几乎所有修改像素图的函数,例如:fill(), fromImage(), load(),包括 QPainter::begin()等QPixmap成员函数都是这样做的。

有两种例外情况必须显式调用detach() ,即调用handle() 或x11PictureHandle() 函数时(仅在X11上可用)。否则,使用系统调用进行的任何修改都将在共享数据上执行。 如果只有一个引用或者位图尚未初始化,detach() 函数将立即返回。

QSizeFdeviceIndependentSize() const
返回与设备无关的像素图的大小。 在用户界面尺寸计算中使用位图尺寸时,应使用该值。 返回值相当于pixmap.size() / pixmap.devicePixelRatio()。默认值为1.0。
qrealdevicePixelRatio() const

返回位图的设备像素比率。这是设备像素和设备无关像素之间的比率。 根据位图大小计算布局几何时使用此函数: QSize layoutSize = image.size() / image.devicePixelRatio(),默认值为1.0。

voidfill(const QColor &color = Qt::white)

用给定的颜色填充位图。 当正在绘制位图时,该函数的效果是不确定的。

boolhasAlpha() const

如果此位图有alpha通道或遮罩返回true,否则返回false。

boolhasAlphaChannel() const
如果位图具有支持alpha通道的格式,则返回true,否则返回false。
intheight() const
返回位图的高度。
boolisNull() const
如果这是空位图,则返回true否则返回false。 一个空位图没有宽度、高度和内容。您不能在空位图中绘制。
boolisQBitmap() const
如果这是QBitmap,则返回true否则返回false。
boolload(const QString &fileName, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)

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

加载程序试图使用指定的format格式读取位图。如果没有指定格式(默认),加载程序会在文件中搜索文件头以猜测文件格式。

文件名可以引用磁盘上的实际文件,也可以引用应用程序的一个嵌入资源。有关如何在应用程序的可执行文件中嵌入位图和其他资源文件的详细信息,请参见Resource System

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

注意:当从主线程中的文件加载时,QPixmaps会自动添加到 QPixmapCache中;使用的密钥是内部密钥,无法获取。

boolloadFromData(const uchar *data, uint len, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
从给定二进制数据datalen第一个字节加载位图。如果位图加载成功,则返回true否则使位图无效并返回false。 加载程序试图使用指定的格式读取位图。如果没有指定格式(默认),加载程序会在文件中搜索文件头以猜测文件格式。 如果需要修改数据以适应较低分辨率的结果(例如从32位转换为8位),请使用flags标志来控制转换。
boolloadFromData(const QByteArray &data, const char *format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor)
重载。 使用format指定的格式和flags转换标志从二进制数据data加载位图。
QBitmapmask() const

从位图的alpha通道中提取位图蒙版。

警告:这可能是一个昂贵的操作。像素图的mask是从像素数据中动态提取的。

QRectrect() const
返回位图的包围矩形。
boolsave(const QString &fileName, const char *format = nullptr, int quality = -1) const
使用format指定的图像文件格式和质量因子quality将位图保存到具有给定文件名fileName的文件中。如果成功则返回true否则返回false。 品质因子必须在范围【0,100】或-1内。指定0获取小的压缩文件,指定100获取大的未压缩文件,指定-1使用默认设置。 如果格式为nullptr,将从文件名的后缀中选择图像格式。
boolsave(QIODevice *device, const char *format = nullptr, int quality = -1) const

重载。此函数使用指定的图像文件格式format和质量因子qualityQPixmap 写入给定设备。例如:可用于将位图直接保存到QByteArray中:

QPixmapscaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const

使用aspectRatioMode指定的纵横比和 transformMode指定的变换模式将位图缩放到给定大小。

如果aspectRatioMode为 Qt::IgnoreAspectRatio,则将像素图缩放到size大小。

如果aspectRatioMode为Q Qt::KeepAspectRatio,则像素图将被缩放为内部尺寸尽可能大的矩形,并保持纵横比。

如果aspectRatioMode为Qt::KeepAspectRatioByExpanding,则像素图将被缩放为外部尺寸尽可能小的矩形,从而保持纵横比。

如果给定的size为空,该函数将返回一个空位图。

在某些情况下,使用缩放设置为painter绘制像素图比缩放像素图更有好处。例如,当painter基于OpenGL或比例因子快速变化时,就会出现这种情况。

QPixmapscaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const
重载。aspectRatioMode指定的纵横比和 transformMode指定的变换模式将位图缩放到给定宽度和高度矩形的位图副本。 如果宽度或高度为零或负数,该函数返回一个空位图。
QPixmapscaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const
使用指定的变换模式mode将返回的图像缩放到给定的高度height,并返回图像的缩放副本。像素图的宽度是自动计算的,因此像素图的长宽比保持不变。 如果高度为0或负数,则返回一个空位图。
QPixmapscaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const
使用指定的变换模式mode将返回的图像缩放到给定的宽度width,并返回图像的缩放副本。像素图的高度是自动计算的,因此像素图的长宽比保持不变。 如果宽度为0或负数,则返回一个空位图。
voidscroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed = nullptr)
这个方便的函数相当于调用 QPixmap::scroll(dxdyQRect(xywidthheight), exposed)。
voidscroll(int dx, int dy, const QRect &rect, QRegion *exposed = nullptr)

将此像素图的面积矩形滚动(dx,dy)。暴露的区域保持不变。您可以选择将指针传递给一个空的QRegion ,以获取滚动操作公开的区域exposed

当位图上有活跃的painter时,不能滚动。

voidsetDevicePixelRatio(qreal scaleFactor)

设置位图的设备像素比率。这是图像像素和设备无关像素之间的比率。 默认比例因子 scaleFactor 为1.0。

将其设置为其他值有两种效果:

在点阵图上打开的QPainters将被缩放。例如:如果在200x200图像上以2.0的比率绘画,将产生100x100的有效(与设备无关)绘画边界。

Qt中基于像素图大小计算布局几何的代码路径将考虑该比率:QSize layoutSize = pixmap.size() / pixmap.devicePixelRatio() 。 devicepixelpratio()其最终效果是像素图显示为高DPI像素图而不是大像素图(请参见绘制高分辨率版本的像素图和图像Drawing High Resolution Versions of Pixmaps and Images)。

voidsetMask(const QBitmap &mask)

设置掩码位图。 此功能将蒙版与位图的alpha通道合并。蒙版上的像素值为1意味着像素图的像素没有变化;值为0表示像素是透明的。遮罩的大小必须与此像素图相同。 设置空蒙版会重置蒙版,使先前透明的像素保持黑色。当正在绘制位图时,该函数的效果是不确定的。

警告:这可能是一个昂贵的操作。

QSizesize() const
返回位图的大小。
voidswap(QPixmap &other)

用此位图交换other位图。这种操作非常快且从不失败。

QImagetoImage() const

将位图转换为图像。如果转换失败,则返回空图像。 如果位图有1位深度,返回的图像也将有1位深度。

具有更多位的图像将以接近代表底层系统的格式返回。

通常,对于带有alpha的位图,这将是QImage::Format_ARGB32_Premultiplied,对于不带alpha的位图,这将是 QImage::Format_RGB32 或 QImage::Format_RGB16 。

注意:目前单色图像上的alpha蒙版被忽略。

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

返回使用给定转换transform和转换模式mode转换的位图副本。原始点阵图没有改变。 内部调整变换 transform 以补偿不需要的平移;即产生的像素图是包含原始像素图的所有变换点的最小像素图。使用 trueMatrix() 函数检索用于转换位图的实际矩阵。

这个函数很慢,因为它涉及到转换到QImage、特殊计算并转换回QPixmap

intwidth() const
返回位图的宽度。
QVariantoperator QVariant() const
以QVariant形式返回位图。
booloperator!() const
如果这是空位图,则返回true否则返回false。
QPixmap &operator=(const QPixmap &pixmap)
将给定的pixmap分配给此像素图,并返回对此 pixmap的引用。
QPixmap &operator=(QPixmap &&other)
将other移动分配给此QPixmap实例。

【静态公有成员】

intdefaultDepth()

返回应用程序使用的默认位图深度。在所有平台上,将返回主屏幕的深度。

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

QPixmapfromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor)

使用指定的flags标志控制转换image,将给定图像转换为位图。

flags参数是Qt::ImageConversionFlags的位或运算。如果为标志传递0将设置所有默认选项。 对于单色和8位图像,图像首先被转换为32位位图,然后用颜色表中的颜色填充。如果这个操作开销太大,可以使用 QBitmap::fromImage()来代替。

QPixmapfromImage(QImage &&image, Qt::ImageConversionFlags flags = Qt::AutoColor)
重载。如果可能的话,将给定图像image转换为位图而不复制。
QPixmapfromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags = Qt::AutoColor)
从直接从imageReader读取的图像创建QPixmap。flags参数是Qt::ImageConversionFlags的位或运算。为标志传递0将设置所有默认选项。 在某些系统上,将图像直接读取到QPixmap比读取一个 QImage并将其转换为QPixmap使用的内存更少。
QTransformtrueMatrix(const QTransform &matrix, int width, int height)
返回用于转换具有给定宽度width、高度height和矩阵matrix的位图的实际矩阵。 使用transformed()函数变换像素图时,会在内部调整变换矩阵以补偿不必要的转换,即ttransformed()会返回包含原始像素图所有变换点的最小像素图。该函数返回修改后的矩阵,它将原始像素图中的点正确映射到新的像素图中。

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

<<< 返回上一级【QPaintDevice类】

<<< 返回根页面

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值