Qt中QBitmap 的使用 --QBitmap的作用


特別注意:如果想把做一個先把圖畫在內存中,在顯示到頁面,不要使用bitmap,這個只有單色;

                 一般情況下QBitmap只作為圖片掩碼使用,比如做不規則窗口。

 

QBitmap表示一種只有黑白的單色圖片,類似於mfc中的位圖。該類主要用於創建自定義的光標和畫刷對象,以及創建區域對象和為某個空間設置掩碼圖片。

QBitmap派生自QPixmap類,它的顏色深讀為1。當然,空的QBitmap對象的顏色深度為0。所以,如果我們將一個顏色深度大於1的圖片賦值給bitmap,bitmap會自動發生抖動,將圖片顏色變為黑白色。

當然,我們也可以單獨創建一個QBitmap對象,然后使用Qt::color0和Qt::color1對它進行填充。其中,使用Qt::color0會將QBitmap的所有位置0,Qt::color1則會將QBitmap的所有位置1。而對一個位圖來說,0代表背景(或透明像素),1代表前景(或不透明像素)。當然,我們還可以使用該類的成員函數clear()將QBitmap對象的所有位置為Qt::color0。

但要注意的是,使用Qt::black 和 Qt::white是沒有意義的,因為QColor::pixel()不一定是用0表示黑色,用1表示白色的。

另外,QBitmap還提供了兩個常用的靜態方法。fromData()可以用一個uchar數組來構建一個QBitmap對象,所以我們可以先把一個圖片使用QFile讀到內存中,然后使用該方法構建出一個QBitmap對象;而另一個fromImage()則提供了將一個QImage轉換成QBitmap的方法。

下面,我們寫一個簡單的例子,將一張圖片分別以QBitmap和QPixmap的形式繪制到窗口上,來看一下它們的效果和區別。

新建一個GUI程序,將准備好的一張圖片作為資源添加到工程中,然后,重寫窗口類的paintEvent(QPaintEvent*)方法,進行繪圖。

代碼如下:

1 void Widget::paintEvent(QPaintEvent *)
2 {
3     QPainter painter(this);
4     QBitmap bitmap(":/1.png");
5     QPixmap pixmap(":/1.png");
6     painter.drawPixmap(0, 0, rect().width()/2, rect().height(), bitmap);
7     painter.drawPixmap(rect().width()/2, 0, rect().width()/2, rect().height(), pixmap);
8 }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM