初識Qt圖片顯示、平移及旋轉

一、新建一個Qt Gui應用,項目名稱爲myPicture,基類選擇爲QMainWindow,類名設置爲MainWindow。web

二、在mainwindow.h頭文件中添加void paintEvent(QPaintEvent *);繪圖事件函數函數

三、在mainwindow.cpp文件中添加以下代碼段,同時頭文件中添加#include<QPainter>ui

 1 void MainWindow::paintEvent(QPaintEvent *)
 2 {
 3 
 4         QPainter painter(this);
 5         QPixmap pix;
 6         pix.load("../myPicture/top.png");//將圖片置於項目的根目錄
 7         //圖一
 8         painter.drawPixmap(0, 0, 22, 22, pix);//圖片尺寸22乘以22,設置大小不同的話,圖片會自動伸縮
 9         //圖二
10         painter.translate(100, 100); //將(100, 100)設爲座標原點
11         painter.drawPixmap(0, 0, 22, 22, pix);//圖片以(100, 100)爲原點
12         //圖三
13         qreal width = pix.width(); //得到之前圖片的寬
14         qreal height = pix.height();//得到之前圖片的高
15         pix = pix.scaled(width*2, height*2, Qt::KeepAspectRatio);//將圖片的寬和高都擴大兩倍,而且在給定的矩形內保持寬高的比值不變
16         painter.drawPixmap(20, 20,pix);//繼續之前面設置好的(100, 100)爲座標原點
17         //圖四
18         painter.translate(100, 100); //再次設置新的(100,100)爲座標原點,相對於最開始的座標原點(0, 0)來講,此處至關於(200, 200)
19         painter.rotate(180); //順時針旋轉90度
20         painter.drawPixmap(0, 0, 22, 22, pix);//注意此處的座標要寫成(0, 0),即在新座標原點放置旋轉後的圖片
21         //圖五
22         painter.shear(0.5, 0.1); //橫向扭曲0.5,縱向扭曲0.1,值越大,扭曲程度越大
23         painter.drawPixmap(-50, -50, 22, 22, pix);//前面設置的反轉屬性沒有更改,實際是將整個座標系進行了180度反轉,所以,向右下方移動爲負x負y
24         //圖六
25         painter.shear(-0.5, -0.1); //若想後面的圖形再也不扭曲,要進行前面扭曲的相反設置
26         painter.drawPixmap(-100, -80, 22, 22, pix);//
27 }

四、運行結果顯示以下 this

附:圖片伸縮後的寬高設置屬性spa

其中:IgnoreAspectRatio:圖片寬高比適應給定好的矩形大小code

     KeepAspectRatio:在給定的矩形中,保持圖片寬高比先後不發生變化orm

     KeepAspectRatioByExpanding:圖片寬高比保持不變,但可能超出矩形大小blog

Qt::IgnoreAspectRatio是不保持圖片的寬高比,Qt::KeepAspectRatio是在給定的矩形中保持寬高比,最後一個也是保持寬高比,但可能超出給定的矩形。事件

相關文章
相關標籤/搜索