Qt中QPainter提供了绘制图像的API,极大地方便了我们对图像的绘制。
Qt中提供了QPixmap, QBitmap,QBitMapQImage,QPicture等图像绘图设备,它们的类关系如下图所示:
QPixmap继承了QPaintDevice,您可用以建立QPainter并于上进行绘图,您也可以直接指定图案加载Qt所支持的图档,像是BMP、GIF、JPG、JPEG、PNG等,并使用QPainter的drawPixmap()绘制在其它的绘图装置上。您可以在QLabel、QPushButton上设定QPixmap以显示图像。QPixmap是针对屏幕显示图像而设计并最佳化,依赖于所在平台的原生绘图引擎,所以一些效果的展现(像是反锯齿),在不同的平台上可能会有不一致的结果。
QBitmap是QPixmap的子类别,提供单色图像,可用于制作光标(QCursor)或笔刷(QBrush)物件。
QPixmap使用平台的绘图引擎,在不同的平台所呈现的效果不一,无法提供个别像素的存取,QImage使用Qt自身的绘图引擎,可提供在不同平台上相同的图像呈现效果,并可透过setPixpel()、pixel()等方法,直接存取指定的像素。
QPicture则是个绘图装置,可以记录并回放QPainter的绘图指令,您可以使用QPainter的begin()方法,指定在QPicture上进行绘图,使用end()方法结束绘图,使用QPicture的save()方法将QPainter所使用过的绘图指令存至档案
QPainter绘图引擎提供了drawImage、drawPicture和drawPixmap三类重载API。
drawImage类API支持绘制正常大小和自适应大小两种图片显示模式;
drawPicture类API支持绘制正常大小图片显示模式,主要用于回放QPainter的绘制;
drawPixmap类API支持绘制正常大小和自适应大小两种图片显示模式;