Qt中四种处理图像数据的类
来源:互联网 发布:测试书籍推荐知乎 编辑:程序博客网 时间:2024/06/01 08:19
开始研究Qt中四种处理图像数据的类:QImage,QPixmap,QBitmap,QPicture。 QImage是设计并优化来为 I/O操作的,可以直接访问和操作像素,而QPixmap是设计并优化来在屏幕上显示图片的。QBitmap仅是继承自QPixmap的一个方便使用的类,是为了确保图片的深度为1.QPicture是绘图设备,可以用来重现QPainter命令。 QPixmap繼承了QPaintDevice,您可用以建立QPainter並於上進行繪圖,您也可以直接指定圖案載入Qt所支援的圖檔,像是BMP、GIF、JPG、JPEG、PNG等,並使用QPainter的drawPixmap()繪製在其它的繪圖裝置上。您可以在QLabel、QPushButton上設定QPixmap以顯示圖像。QPixmap是針對螢幕顯示圖像而設計並最佳化,依賴於所在平台的原生繪圖引擎,所以一些效果的展現(像是反鋸齒),在不同的平台上可能會有不一致的結果。 QBitmap是QPixmap的子類別,提供單色圖像,可用於製作游標(QCursor)或筆刷(QBrush)物件。下面的程式載入相同的圖檔,以觀看QPixmap與QBitmap的呈現效果: #include #include #include #include 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();}執行後的結果如下圖所示:QPixmap使用平台的繪圖引擎,在不同的平台所呈現的效果不一,無法提供個別像素的存取,QImage使用Qt自身的繪圖引擎,可提供在不同平台上相同的圖像呈現效果,並可透過setPixpel()、pixel()等方法,直接存取指定的像素,例如在Qt的QImage文件中,就有提供以下的範例: QImage image(3, 3, QImage::Format_RGB32); QRgb value; value = qRgb(189, 149, 39); // 0xffbd9527 image.setPixel(1, 1, value); value = qRgb(122, 163, 39); // 0xff7aa327 image.setPixel(0, 1, value); image.setPixel(1, 0, value); value = qRgb(237, 187, 51); // 0xffedba31 image.setPixel(2, 1, value); 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); 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gueangyik/archive/2010/03/29/5430100.aspx
- Qt中四种处理图像数据的类
- 【QT】处理图像数据
- MYSQL图像数据的处理
- QT 图像处理 图像缩小
- QT 图像大小处理
- 图像处理qt实现
- QT图像处理算法
- Qt图像处理
- Qt图像处理--灰度处理
- 显卡处理图像数据的过程
- 一些图像处理的数据集
- 数据图像处理 基于特征向量的变换
- 图像处理数据集的准备
- Delphi图像处理 -- 获取窗口或设备的图像数据
- 图像处理之qt实现
- 图像处理之qt实现
- Qt之图像处理QImage
- QT图像类的选择与处理(数码相框优化图片显示)
- VC中_T、_TEXT和TEXT宏的作用
- fmemopen, open_memstream, open_wmemstream
- 诸葛亮--舌辩群儒
- 相关产品设置插件
- 选择排序
- Qt中四种处理图像数据的类
- hdu 1482 Counterfeit Dollar
- 学习小结
- C#中Split分隔字符串的应用(C#、split、分隔、字符串)
- IO总结
- DB2因表空间不够产生load表失败
- 自身修养
- Linux下SVN客户端的使用方法
- 深入理解Magento – 第一章 – Magento强大的配置系统