QImage和QPixmap有什么区别?

Mr.*_*.Tu 74 c++ qt qpixmap qimage

我不明白QImage和QPixmap有什么区别,它们似乎提供相同的功能.我什么时候应该使用QImage?何时应该使用QPixmap?

kar*_*lip 52

通过阅读QImageQPixmap上的文档,Easilly回答:

所述的QPixmap类是一个离屏,可用于作为涂料设备图像表示.

所述QImage的类提供独立于硬件的图像表示,其允许像素数据的直接访问,并且可以被用作涂料设备.

编辑:另外,来自@ Dave的回答:

你不能在GUI线程之外操纵QPixmap,但QImage没有这样的限制.

来自@Arnold:

以下是通常(并非总是)适用的简短摘要:

  • 如果您打算操纵图像,修改图像,更改图像等,请使用QImage.
  • 如果您计划在屏幕上多次绘制相同的图像,请将其转换为QPixmap.

  • 这真的回答了什么吗? (8认同)
  • 只是复制文档和其他人的答案是没有意义的. (3认同)

Arn*_*nce 43

Qt Labs上有一系列很好的文章解释了很多关于Qt图形系统的文章.本文特别有一节QImageQPixmap.

以下是通常(并非总是)适用的简短摘要:

  • 如果您打算操纵图像,修改图像,更改图像等,请使用QImage.
  • 如果您打算在屏幕上多次绘制同一图像,请将其转换为QPixmap.


Dav*_*eer 33

一个重要的区别是QPixmap除了主GUI线程之外,你不能创建或操作任何东西.但是,您可以QImage在后台线程上创建和操作实例,然后在将它们传递回GUI线程后进行转换.


iks*_*ess 17

在工业环境中很重要:

QPixmap存储在进行显示的视频卡上.不是QImage.

因此,如果您有运行应用程序的服务器和执行显示的客户端工作站,则在网络使用方面非常重要.

使用Pixmap,Redraw只包含通过网络重新绘制(几个字节)的顺序.

使用QImage,它包括发送整个图像(大约几MB).


Moh*_*nan 12

  • QPixmap 是一个“图像对象”,其pixel表示形式与您的代码无关,因此QPixmap是在显示屏幕上呈现图像而设计和优化的,使用X11时将其存储在XServer上,因此在XWindow上绘制QPixmap的速度比绘制要快得多。 QImages,因为数据已经在服务器上,可以使用了。

    何时使用QPixmap:如果您只是想反复绘制现有图像(图标..背景..等),请使用QPixmap。

  • QImage客户端代码的“内存中的像素数组” ,QImage是针对I / O以及直接像素访问和操纵而设计和优化的。

    何时使用QImage:如果要绘制,请使用Qpaint或操纵图像像素。

  • QBitmap只是一个方便的QPixmap子类,它确保深度为1,它是单色(1位深度)像素图。就像QPixmap一样,QBitmap已针对使用隐式数据共享进行了优化。

  • QPicture是一种绘画设备,可以记录并重放QPainter命令-您的图形-