QImage与QPixmap区别

原因:
关于这个话题,我其实本人刚开始在windows下进行Qt开发时,并没有太在意?当突然被问到具体区别时,我突然就懵了。特意整理??

参考网址:
https://www.cnblogs.com/s_agapo/archive/2012/03/14/2395603.html
https://blog.csdn.net/ailinty/article/details/8964431
https://blog.csdn.net/qq_18941425/article/details/79917185
区别:
具体四个区别请参考如上网址。

一、不同平台,依赖、存储不同

QPixmap依赖于硬件,QImage不依赖于硬件。
在X11, Mac 以及 Symbian平台上。
QImage: 因为它是存储在客户端,往QImage上绘图比较快,但显示它则比较慢。QPixmap: 具体实现是依赖于系统的,它是存储在服务器端,往QPixmap上绘图比较慢,但显示它则比较快。但在Windows平台上则是是一样的,因为它们都存储在客户端,并不使用任何的GDI资源,可能看起来并没有多大区别。

目前的Qt会把QPixmap都存储在graphics memory中,这明显是依赖硬件的。因此我们对QPixmap的使用需要格外注意。
那么Qt为什么要这么做呢?很简单,设计之初QPixmap就是用来加速显示的,例如我们在paint的时候用QPixmap就会比用其他类的效果好许多。

二、用处分工不同

QPixmap主要是用于绘图,针对屏幕显示而最佳化设计,QImage主要是为图像I/O、图片访问和像素修改而设计的。
当图片小的情况下,直接用QPixmap进行加载,画图时无所谓,当图片大的时候如果直接用QPixmap进行加载,会占很大的内存,一般一张几十K的图片,用QPixmap加载进来会放大很多倍,所以一般图片大的情况下,用QImage进行加载,然后转乘QPixmap用户绘制。QPixmap绘制效果是最好的。

总结:

对于显示小图片时,可以用QPixmap进行加载,绘画图片。当绘画大图片时候,此时最好实现QImage进行加载,因为QImage本身主要是为图像I/O、图片访问和像素修改而设计的,它可以实现对图片旋转、缩放等。然后通过QPixmap实现绘图。

你可能感兴趣的:(QImage,与,QPixmap区别)