欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

QPixmap & QImage

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

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

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

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

5、QImage 類用于加載圖像文件,可選地操作圖像數(shù)據(jù),然后將 QImage 對(duì)象轉(zhuǎn)換為 QPixmap 以顯示在屏幕上?;蛘撸绻恍枰魏尾僮?,可以將圖像文件直接加載到 QPixmap 中。

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

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

QBitmap

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

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

QPicture

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

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

QPicture是平臺(tái)無(wú)關(guān)的,因此它可以使用在多種設(shè)備之上,比如svg、pdf、ps、打印機(jī)或者屏幕。回憶下我們這里所說(shuō)的QPaintDevice,實(shí)際上是說(shuō)可以有QPainter繪制的對(duì)象。QPicture使用系統(tǒng)的分辨率,并且可以調(diào)整 QPainter來(lái)消除不同設(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

需重播繪圖指令的話,新建一個(gè)QPicture對(duì)象,使用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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實(shí)現(xiàn)JPEG格式圖片解析(附代碼)

    C++實(shí)現(xiàn)JPEG格式圖片解析(附代碼)

    這篇文章主要為大家詳細(xì)介紹了C++如何實(shí)現(xiàn)JPEG格式圖片解析功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-05-05
  • Qt實(shí)現(xiàn)兩個(gè)獨(dú)立窗口的信號(hào)通信

    Qt實(shí)現(xiàn)兩個(gè)獨(dú)立窗口的信號(hào)通信

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)兩個(gè)獨(dú)立窗口的信號(hào)通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • c++ STL容器總結(jié)之:vertor與list的應(yīng)用

    c++ STL容器總結(jié)之:vertor與list的應(yīng)用

    本篇文章對(duì)c++中STL容器中的vertor與list的應(yīng)用進(jìn)行了詳細(xì)的分析解釋。需要的朋友參考下
    2013-05-05
  • C++求斐波那契數(shù)的實(shí)例代碼

    C++求斐波那契數(shù)的實(shí)例代碼

    這篇文章介紹了C++求斐波那契數(shù)的實(shí)例代碼,有需要的朋友可以參考一下
    2013-10-10
  • Qt利用DOM類實(shí)現(xiàn)讀取xml文件

    Qt利用DOM類實(shí)現(xiàn)讀取xml文件

    Dom(Document Object Model,即文檔對(duì)象模型)能把XML文檔轉(zhuǎn)換成應(yīng)用程序可遍歷的樹形結(jié)構(gòu),這樣便可以隨機(jī)訪問其中的節(jié)點(diǎn)。本文將詳細(xì)講講實(shí)現(xiàn)的方法,需要的可以參考一下
    2022-06-06
  • C++數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實(shí)現(xiàn)

    C++數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實(shí)現(xiàn)

    紅黑樹在表意上就是一棵每個(gè)節(jié)點(diǎn)帶有顏色的二叉搜索樹,并通過對(duì)節(jié)點(diǎn)顏色的控制,使該二叉搜索樹達(dá)到盡量平衡的狀態(tài)。本文主要為大家介紹了C++中紅黑樹的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • linux下c語(yǔ)言的多線程編程

    linux下c語(yǔ)言的多線程編程

    這篇文章主要介紹了linux下c語(yǔ)言的多線程編程,需要的朋友可以參考下
    2017-10-10
  • C++string底層框架模擬實(shí)現(xiàn)代碼

    C++string底層框架模擬實(shí)現(xiàn)代碼

    本節(jié)文章主要說(shuō)明淺拷貝和深拷貝的優(yōu)缺點(diǎn),以及仿寫string類的邏輯并分析實(shí)現(xiàn)過程,對(duì)C++string底層框架模擬實(shí)現(xiàn)代碼感興趣的朋友一起看看吧
    2021-11-11
  • C語(yǔ)言金幣陣列問題解決方法

    C語(yǔ)言金幣陣列問題解決方法

    這篇文章主要介紹了C語(yǔ)言金幣陣列問題解決方法,主要涉及數(shù)組的靈活運(yùn)算,是一類非常經(jīng)典的算法,需要的朋友可以參考下
    2014-09-09
  • C++解析Json的方法詳解【jsoncpp】

    C++解析Json的方法詳解【jsoncpp】

    這篇文章主要介紹了C++解析Json的方法,結(jié)合實(shí)例形式分析了C++操作json格式數(shù)據(jù)的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2017-06-06

最新評(píng)論