VS之雙緩衝技術

2021-06-28 15:39:48 字數 792 閱讀 7310

當資料量很大時,繪圖可能需要幾秒鐘甚至更長的時間,而且有時還會出現閃爍現象,為了解決這些問題,可採用雙緩衝技術來繪圖。

雙緩衝即在記憶體中建立乙個與螢幕繪圖區域一致的物件,先將圖形繪製到記憶體中的這個物件上,再一次性將這個物件上的圖形拷貝到螢幕上,這樣能大大加快繪圖的速度。

下面使用乙個簡單的例子來說明

不使用雙緩衝技術**:

void cmystatic::draw1(cpaintdc& dc)

使用雙緩衝技術**:

void cmystatic::draw2(cpaintdc& dc)

dcmem.deletedc();

}

對比發現,在程式中,我們需要實現雙緩衝技術,操作很方便,只需要新增如下**即可

crect rect;

getclientrect(&rect);

cdc dcmem;

dcmem.createcompatibledc(&dc);//建立與檢視的裝置相相容的記憶體裝置,新的裝置不具有與原裝置相同的裝置屬性與背景色.

cbitmap bmp;

if(bmp.createcompatiblebitmap(&dc, rect.width(), rect.height()))//建立乙個與檢視相容的點陣圖,只有根據原裝置來建立位圖,才能從裝置中獲取畫素點組成位圖,因為雙緩衝需要保留原裝置中已有的影象,因此需要呼叫這個方法

dcmem.deletedc();

雙緩衝技術

理解 通常我們進行繪圖時,都是直接使用cdc cpaintdc等 物件在螢幕上繪製圖形,如我們經常在onpaint函式中使用 cpaintdc dc this dc.rectangle 0,0,100,100 在螢幕上繪製矩形。但如果應用需要頻繁的繪製圖形,比如每秒要在螢幕上繪製1000個矩形。因此...

2013 4 15 雙緩衝技術

主要原理 當乙個動畫爭先顯示時,程式有在改變他,前面還沒有顯示完,程式又請求重新繪製,這樣螢幕就會不停的閃爍。為了避免閃爍,可以用雙緩衝技術,將要哦處理的都在記憶體中處理好之後,再將其顯示到螢幕上。這樣顯示出來的總是完整的影象,不會出現閃爍的現象。核心技術 先通過setbitmap方法將要繪製哦所有...

Android 雙緩衝技術

有時候當我們的資料量過度的時候,這個時候如果我們頻繁的呼叫ondraw 方法就會導致畫面卡頓現象,閃屏現象,為了防止這種事情的發生,我們可以使用雙緩衝來載入資源顯示。雙緩衝技術例項 author b publicclasssu ceviewextendsviewimplementsrunnable ...