QPixmap主要用於繪圖,針對影像顯示而優化設計;QImage主要是為影像I/O、影像存取及像素修改而設計。但若用QPixmap載入大圖片的時候,會佔用很大內存,適合載入小圖片;一個幾十K的圖片,載入進來後會放大很多倍。
若圖片過大,可用QImage進行加載,然後轉成QPixmap用戶繪製,QPixmap繪製效果最好。
可使用QPixmap類別中的scaled()函數將影像放大或縮小。該函數可以根據指定的模式,返回按比例縮放為具有給定寬度和高度的矩形的大小。
void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QPixmap pix; pix.load(“D:/1.jpg”); painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片 painter.translate(50,50); //将起始点改为(50,50) painter.drawPixmap(0,0,50,50,pix); //在(50,50)起始的宽高为50的矩形中显示图片 }
可使用QPainter類別的rotate()函數實現影像旋轉,其預設是以原點為中心旋轉。
void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QPixmap pix; pix.load(“D:/1.jpg”); painter.drawPixmap(0,0,50,50,pix); //在(0,0)点起始的宽高均为50的句型中显示图片 qreal wid = pix.width(); //获取图像的宽高 qreal hei = pix.height(); pix = pix.scaled(wid*2,hei*2,Qt::KeepAspectRatio);//将图片宽高扩大两倍,且在矩形内保持宽高比值 painter.drawPixmap(50,50,pix); }
必須先改變旋轉中心,然後再旋轉,然後再將原點復原,才能達到想要的效果。
使用的QPainter類別的shear(qreal sh,qreal sv)函數,可實現圖片的扭曲。參數1實現橫行變形,參數2實現縱向變形。當它們的值為0時,表示不扭曲。
影像形狀的變化是利用座標系統的變化來實現的。
void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QPixmap pix; pix.load(“D:/1.jpg”); painter.translate(50,50); //将旋转中心改为(50,50) painter.rotate(90); //顺时针旋转90度 painter.translate(-50,-50); painter.drawPixmap(0,0,50,50,pix); }
以上是Python中的QPixmap怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!