QImage与QPixmap区别
原因:
關(guān)于這個(gè)話題,我其實(shí)本人剛開始在windows下進(jìn)行Qt開發(fā)時(shí),并沒有太在意?當(dāng)突然被問到具體區(qū)別時(shí),我突然就懵了。特意整理??
參考網(wǎng)址:
https://www.cnblogs.com/s_agapo/archive/2012/03/14/2395603.html
https://blog.csdn.net/ailinty/article/details/8964431
https://blog.csdn.net/qq_18941425/article/details/79917185
區(qū)別:
具體四個(gè)區(qū)別請參考如上網(wǎng)址。
一、不同平臺,依賴、存儲不同
QPixmap依賴于硬件,QImage不依賴于硬件。
在X11, Mac 以及 Symbian平臺上。
QImage: 因?yàn)樗谴鎯υ诳蛻舳?#xff0c;往QImage上繪圖比較快,但顯示它則比較慢。QPixmap: 具體實(shí)現(xiàn)是依賴于系統(tǒng)的,它是存儲在服務(wù)器端,往QPixmap上繪圖比較慢,但顯示它則比較快。但在Windows平臺上則是是一樣的,因?yàn)樗鼈兌即鎯υ诳蛻舳?#xff0c;并不使用任何的GDI資源,可能看起來并沒有多大區(qū)別。
目前的Qt會把QPixmap都存儲在graphics memory中,這明顯是依賴硬件的。因此我們對QPixmap的使用需要格外注意。
那么Qt為什么要這么做呢?很簡單,設(shè)計(jì)之初QPixmap就是用來加速顯示的,例如我們在paint的時(shí)候用QPixmap就會比用其他類的效果好許多。
二、用處分工不同
QPixmap主要是用于繪圖,針對屏幕顯示而最佳化設(shè)計(jì),QImage主要是為圖像I/O、圖片訪問和像素修改而設(shè)計(jì)的。
當(dāng)圖片小的情況下,直接用QPixmap進(jìn)行加載,畫圖時(shí)無所謂,當(dāng)圖片大的時(shí)候如果直接用QPixmap進(jìn)行加載,會占很大的內(nèi)存,一般一張幾十K的圖片,用QPixmap加載進(jìn)來會放大很多倍,所以一般圖片大的情況下,用QImage進(jìn)行加載,然后轉(zhuǎn)乘QPixmap用戶繪制。QPixmap繪制效果是最好的。
總結(jié):
對于顯示小圖片時(shí),可以用QPixmap進(jìn)行加載,繪畫圖片。當(dāng)繪畫大圖片時(shí)候,此時(shí)最好實(shí)現(xiàn)QImage進(jìn)行加載,因?yàn)镼Image本身主要是為圖像I/O、圖片訪問和像素修改而設(shè)計(jì)的,它可以實(shí)現(xiàn)對圖片旋轉(zhuǎn)、縮放等。然后通過QPixmap實(shí)現(xiàn)繪圖。
總結(jié)
以上是生活随笔為你收集整理的QImage与QPixmap区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MS SQL Server 常用操作
- 下一篇: [LeetCode] Convert S