QPixmap与QImage的区别
2012-07-17 21:34
260 查看
QPixmap是专门为绘图而生,当需要绘制图片时你需要使用QPixmap。QImage则是为I/O,为图片像素访问以及修改而设计的。如果你想访问图片的像素或是修改图片像素,则需要使用QImage,或者借助于QPainter来操作像素。另外跟QImage不同是,QPixmap跟硬件是相关的,如X11, Mac 以及 Symbian平台上,QPixmap 是存储在服务器端,而QImage则是存储在客户端,在Windows平台上,QPixmap和QImage都是存储在客户端,并不使用任何的GDI资源。 相信大家更关心的是谁比较快,哈哈,现在来总结一下: 在X11, Mac 以及 Symbian平台上,QImage: 因为它是存储在客户端,往QImage上绘图比较快,但显示它则比较慢。QPixmap: 因为它是存储在服务器端,往QPixmap上绘图比较慢,但显示它则比较快。但在Windows平台上则是是一样的,因为它们都存储在客户端。 Qt上图片处理使用QPixmap和QImage时最多了,不过既然谈到图片了,我们把其他几个图片处理类也说一下: QBitmap只是一个继承于QPixmap的简单类,它可以确保图片深度为1。 QBitmap是QPixmap的子类,提供单色图像,可以用来制作游标(QCursor)或者笔刷(QBrush)。我们可以通过以下代码看出两者的区别: class PainterWidget : public QWidget { protected: void paintEvent(QPaintEvent*); }; void PainterWidget::paintEvent(QPaintEvent *event) { QPixmap pixImg("caterpillar.jpg"); QBitmap bitImg("caterpillar.jpg"); QPainter painter(this); painter.drawPixmap(0, 0, pixImg); painter.drawPixmap(200, 0, bitImg); } int main(int argc, char *argv[]) { QApplication app(argc, argv); PainterWidget pWidget; pWidget.setWindowTitle("QPixmap & QBitmap"); pWidget.resize(400, 150); pWidget.show(); return app.exec(); } 复制代码 执行效果如下图所示: QPicture是一个绘画设备类,它记录了并可以重演QPainter的命令。你可以使用QPainter的begin()方法,指定在QPicture上绘图,使用 end()方法结束绘图,使用QPicture的save()方法將QPainter所使用过的绘图指令存至档案,例如: QPicture picture; QPainter painter; painter.begin(&picture); painter.drawRect(10, 20, 100, 50); painter.end(); picture.save("draw_record.pic"); 复制代码 要重播绘图指令的话,建立一個QPicture,使用load()方法载入绘图指令的档案,然后在指定的绘图裝置上绘制QPicture: QPicture picture; picture.load("draw_record.pic"); QPainter painter; painter.begin(this); painter.drawPicture(0, 0, picture); painter.end(); 复制代码 |
相关文章推荐
- QT——设置窗口的固定大小、QProcess、定时器事件、QString::arg、系统时间、QPixmap 和 QImage 区别
- QPixmap和QImage的区别及剖析
- QImage,QPixmap的,QBitmap,QPicture的区别
- QPixmap和QImage的区别
- QImage与Qpixmap的区别
- QPixmap和QImage的区别及剖析
- QPixmap和QImage的区别
- QImage与QPixmap加载图片效果 【两者的区别】
- QT绘图设备:QPixmap,QImage,QPicture的区别
- QPixmap和QImage的区别及剖析
- QImage和QPixmap小区别
- QPixmap 和 QImage区别
- QT绘图设备QPixmap,QImage,QPicture的区别
- QPixmap和QImage的区别
- QPixmap和QImage的区别及剖析 (转载) (2011-10-25 14:51:25)
- qimage 与cv::mat 转化--> QPixmap
- QT QImage QPixmap QBitmap QPicture 区别
- QImage、QPixmap、QBitmap、QPicture 四个类
- 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
- QImage,QPixmap,QBitmap,QPicture