QImage與QPixmap加載圖片效果(QImage不能拉伸圖片,QPixmap默認拉伸圖片)


QImage與QPixmap加載圖片 效果 .

分類: QT開發
qt Qt QT

PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent)

{
this->setWindowTitle("deal picture");

//表達1    此種情況也等同於不寫  只有重新設置圖片大小的時候才需要   eg:表達3
//QPixmap pixmap;
//pixmap.load("Picture.JPG");

 

//表達2   樣式表方法   只能填充部分
 this->setObjectName("myframe");
 this->setStyleSheet("QFrame#myframe{border-image:url(Picture.JPG)}" );
 this->setAutoFillBackground(true);


//表達3    根據圖片的大小來設定界面
 //QPixmap pixmap;    
 //pixmap.load("Picture.JPG");
 //resize(pixmap.size());  

//表達4   palette方法  填充整個界面   會出現一個界面里有多張圖片的效果 
//QPixmap pixmap("Picture.JPG");
//QPalette   palette;
//palette.setBrush(this->backgroundRole(),QBrush(pixmap));
//this->setPalette(palette);
}

void PixmapTest::paintEvent(QPaintEvent *event)
{
 QPainter painter(this);
 painter.drawPixmap(0, 0, QPixmap("Picture.JPG"));

 }

表達1、2運行效果如下:

表達3的運行效果如下:

表達4:運行效果

============================================================================================

其中以下方法(Qlabel),也可以達到表達1、2的效果

PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent)
{
this->setWindowTitle("deal picture");

QPixmap pixmap;
pixmap.load("Picture.JPG");
label = new QLabel(this);
label->setPixmap(pixmap);
}

============================================================================================

以上幾種情況圖片大小和界面大小都不是很匹配,有沒有方法讓圖片自動擴展到整個界面呢?

PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent)
{
this->setFixedSize(640,480);
this->setWindowTitle("deal picture");

}

void PixmapTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPixmap pix;

// 1 、2兩句可以任選一句  也就是說QPixmap在load圖片時,實際上就是將QImage轉化為QPixmap過程
pix.load("Picture.JPG");     // 1
//pix = pix.fromImage(image);// 2
painter.drawPixmap(0, 0, 640, 480, pix);
}

運行效果如下:

但是如果paintEvent中的方法換為:

void PixmapTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QImage image;
image.load("Picture.JPG");
painter.drawImage(0, 0, image, 0, 0, 640, 480);  //注意大小仍然是界面大小哦

}

效果會如何呢?

【綜述】從上面可以看出QImage在加載圖片時,圖片不會根據界面的大小而改變,也就是說我們不能根據界面來拉伸和壓縮圖片;

然而QPixmap在默認情況下,大小即為圖片大小,但是它可以拉伸和壓縮圖片。。。

============================================================================================

但是QPixmap和QImage在效果上有什么區別呢?

void PixmapTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QImage image;
image.load("Picture.JPG");
painter.drawImage(0, 0, image, 0, 0, 320, 480);//坐標(0,0),圖片大小為(320,480)
QPixmap pix;
pix.load("Picture.JPG");
//pix = pix.fromImage(image);
painter.drawPixmap(320, 0, 320, 480, pix);//坐標(320,0),圖片大小為(320,480)
}

效果正如我們想想的那樣:

http://blog.csdn.net/linpuliang/article/details/38725339


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM