繁体   English   中英

QImage和QPixmap有什么区别?

[英]What is the difference between QImage and QPixmap?

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

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

QPixmap类是一个离屏图像表示,可用作绘图设备。

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

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

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

来自@Arnold:

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

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

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

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

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

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

在工业环境中很重要:

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

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

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

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

  • QPixmap是一个“图像对象”,其pixel表示在您的代码中无关紧要。因此QPixmap的设计和优化为了在显示屏幕上渲染图像 ,它在使用X11时存储在XServer上,因此在XWindow上绘制QPixmap 要快得多绘制QImages,因为数据已经在服务器上,并且可以使用。

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

  • QImage客户端代码中的“内存中像素阵列”,QImage是针对I / O设计和优化的,用于直接像素访问和操作。

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

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

  • QPicture是一个绘制设备,可以记录和重放QPainter命令 - 您的绘图 -

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM