我不明白 QImage 和 QPixmap 之间有什么区别,它们似乎提供了相同的功能。什么时候应该使用 QImage,什么时候应该使用 QPixmap?
5 回答
Qt Labs 有一系列很好的文章,解释了很多关于 Qt 图形系统的内容。这篇文章特别有一个关于QImage
vs.的部分QPixmap
。
以下是通常(并非总是)适用的简短摘要:
- 如果您计划对图像进行操作、修改、更改像素等操作,请使用
QImage
. - 如果您打算在屏幕上多次绘制同一图像,请将其转换为
QPixmap
.
一个重要的区别是您不能QPixmap
在除主 GUI 线程之外的任何东西上创建或操作 a。但是,您可以QImage
在后台线程上创建和操作实例,然后在将它们传递回 GUI 线程后对其进行转换。
在工业环境中很重要:
QPixmap 存储在进行显示的视频卡上。不是 QImage。
因此,如果您有一个运行应用程序的服务器,以及一个执行显示的客户端站,那么就网络使用而言,这是非常重要的。
使用 Pixmap,重绘包括通过网络仅发送重绘命令(几个字节)。
使用 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 命令——你的绘图——