我不明白QImage和QPixmap有什么区别,它们似乎提供相同的功能。我何时应该使用QImage?何时应该使用QPixmap?
答案 0 :(得分:45)
通过阅读QImage和QPixmap上的文档来回答Easilly:
QPixmap 类是屏幕外图像表示,可用作绘图设备。
QImage 类提供与硬件无关的图像表示,允许直接访问像素数据,并可用作绘图设备。
编辑:另外,来自@ Dave的回答:
你不能在GUI线程之外操纵QPixmap,但QImage没有这样的限制。
来自@Arnold:
以下是通常(并非总是)适用的简短摘要:
- 如果您打算操作图像,请对其进行修改,更改图像上的像素, 等,使用QImage。
- 如果您计划多次绘制同一图像 在屏幕上,将其转换为QPixmap。
答案 1 :(得分:39)
Qt Labs上有一系列很好的文章解释了很多关于Qt图形系统的文章。 This article特别有一个关于QImage
与QPixmap
的内容。
以下是通常(并非总是)适用的简短摘要:
QImage
。QPixmap
。答案 2 :(得分:32)
一个重要的区别是除了主GUI线程之外,你不能在任何东西上创建或操作QPixmap
。但是,您可以在后台线程上创建和操作QImage
个实例,然后在将它们传回GUI线程后进行转换。
答案 3 :(得分:15)
在工业环境中很重要:
QPixmap存储在进行显示的视频卡上。不是QImage。
因此,如果您有运行应用程序的服务器和执行显示的客户端工作站,那么就网络使用而言,这是非常重要的。
使用Pixmap,重绘只包括通过网络发送重绘(几个字节)的顺序。
使用QImage,它包括发送整个图像(大约几MB)。
答案 4 :(得分:8)
<强>的QPixmap 强>
是一个“图像对象”,其pixel
表示在您的代码中没有任何影响,因此QPixmap是设计和优化的,用于在显示屏上呈现图像,它在使用X11时存储在XServer上,因此在XWindow上绘制QPixmap比绘制QImages 快得多,因为数据已经在服务器上,并且可以随时使用。
何时使用QPixmap :如果您只想重复绘制现有图像(图标...背景等),请使用QPixmap。
QImage 是客户端代码中的“内存像素数组”,QImage是针对I / O设计和优化的,用于直接像素访问和操纵。
何时使用QImage :如果您想使用Qpaint绘制,或操纵图像像素。
QBitmap 只是一个方便的QPixmap子类,确保深度为1,即单色(1位深度)像素图。就像QPixmap一样,QBitmap针对隐式数据共享进行了优化。