QPixmap【详细描述】

Qt 提供了四个用于处理图像数据的类:QImage, QPixmap, QBitmap and QPicture

  • QImage针对 I/O 、直接像素访问、操作等方面进行了设计和优化
  • QPixmap 是专为在屏幕上显示图像而设计和优化的。
  • QBitmap 只是一个继承了 QPixmap 的便捷类,保证深度为 1。 isQBitmap() 如果返回为真,说明QPixmap对象是一张位图,则返回 () 函数,否则返回假。
  • QPicture 类是一个绘制设备,用于记录和重放QPainter命令。

QPixmap可以很容易地显示在屏幕上,使用 QLabel 或QAbstractButton的子类之一(如 QPushButton 和 QToolButton)。QLabel 具有pixmap属性,而QAbstractButton具有 icon 属性。

QPixmap 对象可以按值传递,因为 QPixmap 类使用隐式数据共享。有关详细信息,请参阅 Implicit Data Sharing。QPixmap对象也可以流式传输。

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

有一些函数可以进行 QImage 和 QPixmap之间的转换。通常,QImage类用于加载图像文件,操作图像数据,然后将对象转换QPixmap以显示到屏幕上 。或者,如果不需要任何操作,则可以将图像文件直接加载到QPixmap中。

QPixmap提供一组函数,用于获取有关pixmap的各种信息。此外,还有几个函数可以实现像素图的转换。


 读取和写入图像文件 

QPixmap 提供了几种读取图像文件的方法:

1.可以在构造 QPixmap 对象时加载文件

2.可以稍后使用 load() 或 loadFromData()函数加载文件。

加载时,文件名可以引用磁盘上的实际文件,也可以引用应用程序的嵌入资源。有关如何在应用程序的可执行文件中嵌入图像和其他资源文件的详细信息,请参阅 The Qt Resource System 概述。

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

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

FormatDescriptionQt's support
BMPWindows BitmapRead/write
GIFGraphic Interchange Format (optional)Read
JPGJoint Photographic Experts GroupRead/write
JPEGJoint Photographic Experts GroupRead/write
PNGPortable Network GraphicsRead/write
PBMPortable BitmapRead
PGMPortable GraymapRead
PPMPortable PixmapRead/write
XBMX11 BitmapRead/write
XPMX11 PixmapRead/write

 Pixmap信息 

QPixmap 提供了一组函数,可用于获取有关 pixmap 的各种信息::

Available Functions

Geometry

几何特性

size(), width() , height()函数提供有关像素图大小的信息。 rect()函数返回图像的封闭矩形。

Alpha component

透明通道

如果像素图的格式与 Alpha 通道相关, hasAlphaChannel() 返回真,否则返回假。

hasAlpha(), setMask() and mask() 是旧函数,不应使用,它们可能非常慢。

 createHeuristicMask() 函数为此像素图创建并返回一个 1 bpp 启发式掩码(即 a)。它的工作原理是从其中一个角中选择一种颜色,然后从所有边缘开始削掉该颜色的像素。

createMaskFromColor() 函数根据给定的颜色为像素图创建并返回一个蒙版。

Low-level information

底层信息

The depth() function returns the depth of the pixmap. The defaultDepth() function returns the default depth, i.e. the depth used by the application on the given screen.

The cacheKey() function returns a number that uniquely identifies the contents of the QPixmap object.

depth() 函数返回像素图的深度。  defaultDepth() 函数返回默认深度,即应用程序在给定屏幕上使用的深度。
cacheKey()函数返回一个唯一标识 QPixmap 对象内容的数字。


 Pixmap转换 

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

要将 QPixmap 与 HICON 相互转换,您可以分别使用 QtWinExtras 函数 QtWin::toHICON() 和 QtWin::fromHICON()。


 Pixmap变换 

QPixmap支持许多函数来创建新的像素图,该像素图是原始像素图的变换版本:

 scaled(), scaledToWidth() 和 scaledToHeight() 函数返回像素图的缩放副本,而  copy()函数创建一个 QPixmap,它是原始像素图的普通副本。

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

参阅 QBitmapQImageQImageReader, and QImageWriter.


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

<<< 返回根页面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值