最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt中QPixmap、QImage、QPicture、QBitmap四者區(qū)別詳解

 更新時間:2022年03月11日 15:07:30   作者:luoyayun361  
Qt 提供了四個類來處理圖像數(shù)據(jù):QImage、QPixmap、QBitmap 和 QPicture,本文就詳細(xì)的介紹一下四者區(qū)別,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

Qt 提供了四個類來處理圖像數(shù)據(jù):QImage、QPixmap、QBitmap 和 QPicture。 QImage 是為 I/O 和直接像素訪問和操作而設(shè)計(jì)和優(yōu)化的,而 QPixmap 是為在屏幕上顯示圖像而設(shè)計(jì)和優(yōu)化的。 QBitmap只是一個繼承QPixmap的便利類,保證深度為1。如果QPixmap對象是位圖,isQBitmap()函數(shù)返回true,否則返回false。最后,QPicture 類是一個繪制設(shè)備,用于記錄和重放 QPainter 命令。

QPixmap & QImage

1、QPixmap主要是用于繪圖,針對屏幕顯示而最佳化設(shè)計(jì),QImage主要是為圖像I/O、圖片訪問和像素修改而設(shè)計(jì)的

2、QPixmap依賴于所在的平臺的繪圖引擎,故例如反鋸齒等一些效果在不同的平臺上可能會有不同的顯示效果,QImage使用Qt自身的繪圖引擎,可在不同平臺上具有相同的顯示效果。

3、目前的Qt會把QPixmap都存儲在graphics memory中,QImage是存儲在客戶端的,是獨(dú)立于硬件的。在 X11, Mac 以及 Symbian平臺上,QPixmap 是存儲在服務(wù)器端,而QImage則是存儲在客戶端,在Windows平臺上,QPixmap和QImage都是存儲在客戶端,并不使用任何的GDI資源。

4、由于QImage是獨(dú)立于硬件的,也是一種QPaintDevice,因此我們可以在另一個線程中對其進(jìn)行繪制,而不需要在GUI線程中處理,使用這一方式可以很大幅度提高UI響應(yīng)速度。

5、QImage 類用于加載圖像文件,可選地操作圖像數(shù)據(jù),然后將 QImage 對象轉(zhuǎn)換為 QPixmap 以顯示在屏幕上?;蛘?,如果不需要任何操作,可以將圖像文件直接加載到 QPixmap 中。

6、QPixmap使用底層平臺的繪制系統(tǒng)進(jìn)行繪制,無法提供像素級別的操作,而QImage則是使用獨(dú)立于硬件的繪制系統(tǒng),實(shí)際上是自己繪制自己,因此提供了像素級別的操作,并且能夠在不同系統(tǒng)之上提供一個一致的顯示形式。

可以把QImage想象成一個RGB顏色的二維數(shù)組,記錄了每一像素的顏色。

QBitmap

QBitmap繼承自QPixmap,因此具有QPixmap的所有特性。QBitmap的色深始終為1. 色深這個概念來自計(jì)算機(jī)圖形學(xué),是指用于表現(xiàn)顏色的二進(jìn)制的位數(shù)。我們知道,計(jì)算機(jī)里面的數(shù)據(jù)都是使用二進(jìn)制表示的。為了表示一種顏色,我們也會使用二進(jìn)制。比如我們要表示8種顏色,需要用3個二進(jìn)制位,這時我們就說色深是3. 因此,所謂色深為1,也就是使用1個二進(jìn)制位表示顏色。1個位只有兩種狀態(tài):0和1,因此它所表示的顏色就有兩種,黑和白。所以說,QBitmap實(shí)際上是只有黑白兩色的圖像數(shù)據(jù)。

由于QBitmap色深小,因此只占用很少的存儲空間,所以適合做光標(biāo)文件和筆刷。

QPicture

QPicture則是一個繪圖裝置,用于記錄和重播Qpainter的繪圖指令。

這是一個可以記錄和重現(xiàn)QPainter命令的繪圖設(shè)備。 QPicture將QPainter的命令序列化到一個IO設(shè)備,保存為一個平臺獨(dú)立的文件格式。這種格式有時候會是“元文件(meta- files)”。Qt的這種格式是二進(jìn)制的,不同于某些本地的元文件,Qt的pictures文件沒有內(nèi)容上的限制,只要是能夠被QPainter繪制的元素,不論是字體還是pixmap,或者是變換,都可以保存進(jìn)一個picture中。

QPicture是平臺無關(guān)的,因此它可以使用在多種設(shè)備之上,比如svg、pdf、ps、打印機(jī)或者屏幕?;貞浵挛覀冞@里所說的QPaintDevice,實(shí)際上是說可以有QPainter繪制的對象。QPicture使用系統(tǒng)的分辨率,并且可以調(diào)整 QPainter來消除不同設(shè)備之間的顯示差異。

·使用begin()方法在QPicture上進(jìn)行繪圖,使用end()結(jié)束繪圖,使用save()保存至檔案

 QPicture picture;
 QPainter painter;
 painter.begin(&picture);           // paint in picture
 painter.drawEllipse(10,20, 80,70); // draw an ellipse
 painter.end();                     // painting done
 picture.save("drawing.pic");       // save picture

需重播繪圖指令的話,新建一個QPicture對象,使用load()重新載入保存的檔案,然后再在指定的繪圖設(shè)備QDevice上繪制QPicture:

QPicture picture;
picture.load("drawing.pic");           // load picture
QPainter painter;
painter.begin(&myImage);               // paint in myImage
painter.drawPicture(0, 0, picture);    // draw the picture at (0,0)
painter.end();                         // painting done

參考:

到此這篇關(guān)于Qt中QPixmap、QImage、QPicture、QBitmap四者區(qū)別詳解的文章就介紹到這了,更多相關(guān)QPixmap、QImage、QPicture、QBitmap內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++核心編程之占位參數(shù)和默認(rèn)參數(shù)

    C++核心編程之占位參數(shù)和默認(rèn)參數(shù)

    這篇文章主要介紹了C++核心編程之占位參數(shù)和默認(rèn)參數(shù),c++中函數(shù)的形參列表中的形參是可以有默認(rèn)值的,函數(shù)的形參列表里可以有占位參數(shù),用來占位,調(diào)用函數(shù)時必須填補(bǔ)位置。下面更多相關(guān)內(nèi)容的詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-03-03
  • c語言的指針數(shù)組詳解

    c語言的指針數(shù)組詳解

    這篇文章主要為大家介紹了c語言的指針數(shù)組,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Qt使用SQLite數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)增刪改查

    Qt使用SQLite數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)增刪改查

    這篇文章主要為大家詳細(xì)介紹了Qt如何使用SQLite數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)增刪改查功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06
  • c語言中如何修改文件中間的幾個字節(jié)

    c語言中如何修改文件中間的幾個字節(jié)

    工作中碰到一個問題,如何只修改文件中間的幾個字節(jié),而其他的內(nèi)容不變。這個問題看似簡單,但是很多人估計(jì)都不知道怎么做。我開始seek到文件的特定的位置,然后寫文件,但是使用的文件打開模式不對,文件不是被清空,就是被截斷,達(dá)不到效果
    2020-10-10
  • C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃)

    C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++中new與delete、malloc與free應(yīng)用分析

    C++中new與delete、malloc與free應(yīng)用分析

    這篇文章主要介紹了C++中new與delete、malloc與free應(yīng)用分析,很重要的概念,需要的朋友可以參考下
    2014-08-08
  • 詳解C++實(shí)現(xiàn)鏈表的排序算法

    詳解C++實(shí)現(xiàn)鏈表的排序算法

    鏈表排序思想和數(shù)組排序類似,區(qū)別就是數(shù)組遍歷容易,數(shù)據(jù)交換也容易;鏈表(單項(xiàng)鏈表)只能一個方向遍歷,不能逆序遍歷,且不能隨機(jī)訪問,所以排序比較麻煩。本文將詳細(xì)介紹鏈表排序的方式,并且用C++來實(shí)現(xiàn)
    2021-06-06
  • C++隱式類型轉(zhuǎn)換運(yùn)算符operator type()用法詳解

    C++隱式類型轉(zhuǎn)換運(yùn)算符operator type()用法詳解

    這篇文章主要介紹了C++隱式類型轉(zhuǎn)換運(yùn)算符operator type()用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • C++11 call_once 和 once_flag的使用與區(qū)別

    C++11 call_once 和 once_flag的使用與區(qū)別

    本文主要介紹了C++11 call_once 和 once_flag的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C實(shí)現(xiàn)分子沉積模擬的示例代碼

    C實(shí)現(xiàn)分子沉積模擬的示例代碼

    這篇文章主要介紹了計(jì)算機(jī)在材料科學(xué)中的一個練習(xí)題,功能是模擬氣化后分子沉積
    2013-11-11

最新評論

图片| 安远县| 阿图什市| 应城市| 麻阳| 平邑县| 苏尼特左旗| 越西县| 特克斯县| 凤山县| 安仁县| 黑水县| 三台县| 新田县| 东海县| 伊金霍洛旗| 珲春市| 林口县| 方正县| 嫩江县| 西安市| 邹城市| 木里| 武陟县| 盐池县| 瓦房店市| 达尔| 玛沁县| 大城县| 罗源县| 惠州市| 灵璧县| 太和县| 桐梓县| 锡林浩特市| 海宁市| 自治县| 岢岚县| 昔阳县| 温州市| 邵阳县|