QImage和QPixmap有什么区别?

时间:2012-04-25 00:30:52

标签: c++ qt qimage qpixmap

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

5 个答案:

答案 0 :(得分:45)

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

  

QPixmap 类是屏幕外图像表示,可用作绘图设备。

     

QImage 类提供与硬件无关的图像表示,允许直接访问像素数据,并可用作绘图设备。

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

  

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

来自@Arnold:

  

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

     
      
  • 如果您打算操作图像,请对其进行修改,更改图像上的像素,   等,使用QImage。
  •   
  • 如果您计划多次绘制同一图像   在屏幕上,将其转换为QPixmap。
  •   

答案 1 :(得分:39)

Qt Labs上有一系列很好的文章解释了很多关于Qt图形系统的文章。 This article特别有一个关于QImageQPixmap的内容。

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

  • 如果您打算操纵图片,修改图片,更改图片等,请使用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针对隐式数据共享进行了优化。

  • QPicture 是一种用于记录和回放QPainter命令的绘图设备 - 您的绘图 -