您好,登錄后才能下訂單哦!
Qt可顯示基本的圖像類型,利用QImage、QPxmap類可以實(shí)現(xiàn)圖像的顯示,并且利用類中的方法可以實(shí)現(xiàn)圖像的基本操作(縮放、旋轉(zhuǎn))。
1. Qt可顯示的圖像類型
參考Qt的幫助文檔,可支持的類型,即可以直接讀取并顯示的格式有BMP、GIF、JPG、JPEG、PNG、TIFF、PBM、PGM、PPM、XBM、XPM。
2. Qt用如何顯示圖像
通常用QLabel顯示圖像,QLabel類有setPixmap()函數(shù),可以用來顯示圖像。也可以直接用QPainter畫出圖像。
如果圖像過大,直接用QLabel顯示,將會(huì)出現(xiàn)有部分圖像顯示不出來,這時(shí)可以用Scroll Area部件。方法:將QLabel部件放到Scroll Area部件里面,將兩個(gè)采用柵格布局,當(dāng)圖像超出了QLabel部件大小時(shí),就會(huì)產(chǎn)生滑動(dòng)桿,這樣圖像就可以都看到了。
3. 顯示的方法
步驟:先打開一個(gè)圖像;將圖像文件加載進(jìn)QImage對(duì)象中;再用QPixmap對(duì)象獲得圖像;最后用QLabel選擇一個(gè)QPixmap圖像對(duì)象顯示。
代碼如下:
QString filename; filename=QFileDialog::getOpenFileName(, tr(), , tr()); (filename.isEmpty()) { ; } { QImage* img= QImage; (! ( img->load(filename) ) ) { QMessageBox::information(, tr(), tr()); delete img; ; } ui->label->setPixmap(QPixmap::fromImage(*img)); }
注:也可以直接用QPixmap類的對(duì)象采用Load函數(shù)加載圖像。這里說下QImage和QPixmap類的用處:QImage為圖像的像素級(jí)訪問做了優(yōu)化,QPixmap使用底層平臺(tái)的繪制系統(tǒng)進(jìn)行繪制,無法提供像素級(jí)別的操作,而QImage則是使用獨(dú)立于硬件的繪制系統(tǒng)。
4. 圖像縮放
圖像縮放采用scaled函數(shù)。函數(shù)原型
QImage QImage::scaled ( const QSize & size,Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationModetransformMode = Qt::FastTransformation ) const
使用方法如下,還是利用上面的img:
QImage* imgScaled = QImage; *imgScaled=img->scaled(width, height, Qt::KeepAspectRatio); ui->label->setPixmap(QPixmap::fromImage(*imgScaled));
scaled函數(shù)中width和height表示縮放后圖像的寬和高,即將原圖像縮放到(width,height)大小。
5. 圖像旋轉(zhuǎn)
圖像旋轉(zhuǎn)可以利用QImage類的transformed函數(shù),向transformed函數(shù)傳入QMatrix對(duì)象,QMatrix對(duì)象指定了旋轉(zhuǎn)的角度。
代碼如下:
QImage* imgRatate = QImage; QMatrix matrix; matrix.rotate(); *imgRotate = img->transformed(matrix); ui->label->setPixmap(QPixmap::fromImage(*imgRotate));
注意:rotate函數(shù)中參數(shù)是旋轉(zhuǎn)的角度,旋轉(zhuǎn)是按順時(shí)針方向旋轉(zhuǎn)的,上面順時(shí)針旋轉(zhuǎn)270度,即逆時(shí)針旋轉(zhuǎn)90度。
6. 圖像連續(xù)縮放
有了圖像縮放的基礎(chǔ),就可以實(shí)現(xiàn)圖像的連續(xù)縮放,可以放置一個(gè)橫向滑竿(中文解釋不標(biāo)準(zhǔn),就是Horizontal Slider部件 ),滑動(dòng)滑輪的位置以實(shí)現(xiàn)圖像連續(xù)縮放。
Horizontal Slider部件指向的值為整型value,即縮放后的圖像為
img->scaled(orignalWidth*value/100,
orignalHeight*value/100,
Qt::KeepAspectRatio);
orignalWidth和orignalHeight為原始圖像的寬和高。
注意:在對(duì)原始圖像進(jìn)行縮放多少倍數(shù)時(shí),在相應(yīng)的槽函數(shù)內(nèi)只需要調(diào)用Horizontal Slider部件對(duì)象的setValue函數(shù)即可,因?yàn)镠orizontal Slider部件滑竿指向的值一旦變化就會(huì)觸發(fā)對(duì)應(yīng)的槽函數(shù)來對(duì)圖像進(jìn)行縮放。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。