我不明白QImage和QPixmap之间的区别,它们似乎提供相同的功能。什么情况下应该使用QImage和什么情况下应该使用QPixmap?
我不明白QImage和QPixmap之间的区别,它们似乎提供相同的功能。什么情况下应该使用QImage和什么情况下应该使用QPixmap?
在Qt实验室有一系列很好的文章,介绍了很多关于Qt图形系统的知识。这篇文章特别讲解了QImage
和QPixmap
之间的区别。
以下是一个通常(不总是)适用的简短总结:
QImage
。QPixmap
。QImage
的“操作和修改”是否包括将其保存为图像文件?如果我从 QImage
对象开始,将其保存为图像文件时哪个更快? - reddy一个重要的区别是,除了主 GUI 线程外,您不能在任何其他线程上创建或操作 QPixmap
。但是,您可以在后台线程上创建和操作 QImage
实例,然后在将它们传回 GUI 线程后转换。
在工业环境中非常重要:
QPixmap 存储在负责显示的视频卡上,而不是 QImage。
因此,如果您有一个运行应用程序的服务器和一个用于显示的客户端工作站,则在网络使用方面非常重要。
使用 Pixmap,重新绘制只需要通过网络发送重新绘制的指令(几个字节)。
使用 QImage,需要发送整个图像(大约几 MB)来重新绘制。
QPixmap 是一个“图像对象”,其pixel
表示在您的代码中并不重要,因此QPixmap被设计和优化用于在显示屏上渲染图像,当使用X11时,它存储在XServer上,因此在XWindow上绘制QPixmap比绘制QImage要快得多,因为数据已经在服务器上,准备好使用。
何时使用QPixmap:如果只想绘制现有图像(图标..背景..等等),尤其是重复使用,则使用QPixmap。
QImage 是客户端代码中的“像素数组”,QImage被设计和优化用于I/O以及直接像素访问和操作。
何时使用QImage:如果要使用Qpaint绘制或操作图像像素。
QBitmap 只是一个方便的QPixmap子类,确保深度为1,它是单色(1位深度)Pixmap。就像QPixmap一样,QBitmap也被优化为使用隐式数据共享。