qpixmap與qimage的區別:
qpixmap依賴於硬體,qimage不依賴於硬體。
qpixmap主要是用於繪圖,針對螢幕顯示而最佳化設計,qimage主要是為影象i/o、訪問和畫素修改而設計的。
當小的情況下,直接用qpixmap進行載入,畫圖時無所謂,當大的時候如果直接用qpixmap進行載入,會佔很大的記憶體,一般一張幾十k的,用qpixmap載入進來會放大很多倍,所以一般大的情況下,用qimage進行載入,然後轉乘qpixmap使用者繪製。qpixmap繪製效果是最好的。
qpixmap用法:(**
我想qt 中qpixmap這個類大家都很熟悉,它可以很簡單的在標籤上貼圖;例如:
qpixmap p;
p.load("1.png");
label->setpixmap(p);
就這麼簡單,但是我今天突然發現個問題,就是:
qpixmap p;
p.load("1.png");
label->setpixmap(p);
p.load("2.png");
label->setpixmap(p);
p.load("1.png");
label->setpixmap(p);
當用同乙個p,即全域性變數時,你載入1,顯示1;再載入2,顯示2;可當你再想變回一時,你再載入一,不好使了,變不回來了,還是顯示二,你在載入個三,好使,再想變回二,不好使了。。。。。。
這是為神馬呢???
原來,p.load()是將載入到緩衝區中:qpixmapcache,當你載入二是,一併沒有被覆蓋,此時緩衝區內有一和二,當你再次載入一時,以為緩衝區裡應經有了,所以p.load(),直接返回true;但是仍是二,所以不能顯示回一!
解決辦法很簡單,有三種辦法:
一、 直接定義區域性變數,這樣每次都是新的緩衝區;
二、 當再次載入時,先將緩衝區清空, qpixmapcache::clear();然後再載入;
三、 在初始化函式裡寫:qpixmapcache::setcachelimit(1);設定緩衝區內只能放一張,這樣就會替換原來的,就可以載入新的了!
Qt之SVG轉QPixmap並改變顏色
方法有兩種,使用qsvgrenderer與不使用qsvgrenderer 使用qt類將svg轉換為qpixmap格式是非常容易的,在qt文件中有些相關的例子,但是這些例子僅僅處理了螢幕裝置的標準畫素比為1的情況。如果你需要在高分屏上顯示影象,結果會有些不一樣。下面的函式傳入svg檔案的路徑,並根據第...
static用法總結
static static關鍵字是c,c 中都存在的關鍵字,它主要有三種使用方式,其中前兩種只指在c語言中使用,第三種在c 中使用 c,c 中具體細微操作不盡相同,本文以c 為準 1 區域性靜態變數 2 外部靜態變數 函式 3 靜態資料成員 成員函式 下面就這三種使用方式及注意事項分別說明 一 區域...
sizeof用法總結
在vc中,sizeof有著許多的用法,而且很容易引起一些錯誤。下面根據sizeof後面的 引數對sizeof的用法做個總結。a 引數為資料型別或者為一般變數。例如sizeof int sizeof long 等等。這種情 況要注意的是不同系統系統或者不同編譯器得到的結果可能是不同的。例如int型別在...