C++ QImage和QPixmap之间有什么区别?
我不明白QImage和QPixmap之间有什么区别,它们似乎提供了相同的功能。我什么时候应该使用QImage,什么时候应该使用QPixmap?Qt实验室有一系列很好的文章,解释了很多关于Qt图形系统的内容。特别是关于C++ QImage和QPixmap之间有什么区别?,c++,qt,qimage,qpixmap,C++,Qt,Qimage,Qpixmap,我不明白QImage和QPixmap之间有什么区别,它们似乎提供了相同的功能。我什么时候应该使用QImage,什么时候应该使用QPixmap?Qt实验室有一系列很好的文章,解释了很多关于Qt图形系统的内容。特别是关于QImage与QPixmap的章节 以下是一个通常(并非总是)适用的简短总结: 如果您计划操作图像、修改图像、更改图像上的像素等,请使用QImage 如果计划在屏幕上多次绘制同一图像,请将其转换为QPixmap 一个重要的区别是,除了主GUI线程之外,您不能在任何东西上创建或操作Q
QImage
与QPixmap
的章节
以下是一个通常(并非总是)适用的简短总结:
- 如果您计划操作图像、修改图像、更改图像上的像素等,请使用
QImage
- 如果计划在屏幕上多次绘制同一图像,请将其转换为
QPixmap
QPixmap
。但是,您可以在后台线程上创建和操作QImage
实例,然后在将它们传递回GUI线程后对其进行转换。通过阅读和上的文档轻松回答:
QPixmap类是一种屏幕外图像表示,可以用作绘制设备
QImage类提供独立于硬件的图像表示,允许直接访问像素数据,并可用作绘制设备
编辑:还有@Dave的答案:
您不能在GUI线程之外操作QPixmap,但是QImage没有这样的限制
来自@Arnold:
以下是一个通常(并非总是)适用的简短总结:
- 如果您计划操纵图像,请对其进行修改,更改图像上的像素, 等等,使用QImage
- 如果您计划多次绘制同一图像 在屏幕上,将其转换为QPixmap
在工业环境中很重要: QPixmap存储在进行显示的视频卡上。不是齐玛格 因此,如果您有一个运行应用程序的服务器和一个执行显示的客户端站,这对于网络使用来说是非常重要的 对于Pixmap,重画只包括通过网络发送重画命令(几个字节) 使用QImage,它包括发送整个图像(大约几MB)。
- QPixmap
是一个“图像对象”,其
表示在您的代码中无关紧要,因此QPixmap是为在显示屏上渲染图像而设计和优化的,当使用X11时,它存储在XServer上,因此在XWindow上绘制QPixmap比绘制QImages要快得多,因为数据已经在服务器上,并且可以随时使用 何时使用QPixmap:如果只想反复绘制现有图像(图标..背景..等),请使用QPixmap像素
- QImage是客户端代码的“内存像素数组”,QImage是针对I/O以及直接像素访问和操作而设计和优化的 何时使用QImage:如果要绘制、使用Qpaint或操纵图像像素
- QBitmap只是一个方便的QPixmap子类,确保深度为1,它是一个单色(1位深度)pixmap。与QPixmap一样,QBitmap也针对隐式数据共享进行了优化
- QPicture是一种绘画设备,用于记录和重放QPainter命令--您的绘画--