溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中的QPixmap怎么使用

發(fā)布時(shí)間:2023-03-21 15:43:18 來(lái)源:億速云 閱讀:129 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“Python中的QPixmap怎么使用”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Python中的QPixmap怎么使用”吧!

QPixmap主要用于繪圖,針對(duì)圖像顯示而最佳化設(shè)計(jì);QImage主要是為圖像I/O、圖像訪問(wèn)及像素修改而設(shè)計(jì)。但若用QPixmap加載大圖片的時(shí)候,會(huì)占用很大內(nèi)存,適合加載小圖片;一個(gè)幾十K的圖片,加載進(jìn)來(lái)后會(huì)放大很多倍。

若圖片過(guò)大,可用QImage進(jìn)行加載,然后轉(zhuǎn)成QPixmap用戶繪制,QPixmap繪制效果最好。

1.使用QPixmap顯示圖片

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.drawPixmap(0,0,50,50,pix); //在(0,0)點(diǎn)起始的寬高均為50的句型中顯示圖片
 
    painter.translate(50,50); //將起始點(diǎn)改為(50,50)
    painter.drawPixmap(0,0,50,50,pix); //在(50,50)起始的寬高為50的矩形中顯示圖片
}

2.使用QPixmap實(shí)現(xiàn)圖片的縮放

      可使用QPixmap類中的scaled()函數(shù)對(duì)圖像進(jìn)行放大或縮小。該函數(shù)可以根據(jù)指定的模式,返回按比例縮放為具有給定寬度和高度的矩形的大小。

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.drawPixmap(0,0,50,50,pix); //在(0,0)點(diǎn)起始的寬高均為50的句型中顯示圖片
    
    qreal wid = pix.width(); //獲取圖像的寬高
    qreal hei = pix.height();
    pix = pix.scaled(wid*2,hei*2,Qt::KeepAspectRatio);//將圖片寬高擴(kuò)大兩倍,且在矩形內(nèi)保持寬高比值
    painter.drawPixmap(50,50,pix);
}

3.使用QPixmap實(shí)現(xiàn)圖像的旋轉(zhuǎn)

       可使用QPainter類的rotate()函數(shù)實(shí)現(xiàn)圖像旋轉(zhuǎn),其默認(rèn)是以原點(diǎn)為中心進(jìn)行旋轉(zhuǎn)。

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.translate(50,50); //將旋轉(zhuǎn)中心改為(50,50)
    painter.rotate(90); //順時(shí)針旋轉(zhuǎn)90度
    painter.translate(-50,-50); 
    painter.drawPixmap(0,0,50,50,pix); 
}

  必須先改變旋轉(zhuǎn)中心,然后再旋轉(zhuǎn),然后再將原點(diǎn)復(fù)原,才能達(dá)到想要的效果。

4.使用QPixmap實(shí)現(xiàn)圖像的扭曲

          使用的QPainter類的shear(qreal sh,qreal sv)函數(shù),可以實(shí)現(xiàn)圖片的扭曲。參數(shù)1實(shí)現(xiàn)橫行變形,參數(shù)2實(shí)現(xiàn)縱向變形。當(dāng)它們的值為0時(shí),表示不扭曲。

          圖像形狀的變化是利用坐標(biāo)系的變化實(shí)現(xiàn)的。

void Dialog::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPixmap pix;
    pix.load(“D:/1.jpg”);
    painter.drawPixmap(0,0,50,50,pix); 
    painter.shear(0.5,0) ;//橫向扭曲
    painter.drawPixmap(50,0,50,50,pix); 
    painter.shear(0,0.5);//縱向扭曲
    painter.drawPixmap(0,50,50,50,pix); 
    painter.shear(0.5,0.5);//同時(shí)橫縱扭曲
    painter.drawPixmap(50,50,50,50,pix); 
}

感謝各位的閱讀,以上就是“Python中的QPixmap怎么使用”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Python中的QPixmap怎么使用這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI