C 實現雙緩衝

2021-10-01 09:49:30 字數 1359 閱讀 5717

1、在記憶體中申請緩衝區,建立相容記憶體;

2、建立位圖,並將點陣圖與緩衝區記憶體相關聯起來;

3、在相容記憶體裡繪製;

4、將繪製好的點陣圖拷貝到當前裝置;

5、釋放相容記憶體。

cpoint ptcenter; 

crect rect,ellipserect;

getclientrect

(&rect)

; ptcenter = rect.

centerpoint()

; cdc dcmem;

//用於緩衝作圖的記憶體dc

cbitmap cbbmp;

//記憶體中承載臨時圖象的點陣圖

dcmem.

createcompatibledc

(pdc)

;//申請緩衝區,依附視窗dc建立相容記憶體dc

cbbmp.

createcompatiblebitmap

(pdc,rect.

width()

,rect.

height()

);//建立相容位圖

dcmem.

selectobject

(&cbbmp)

;//將位圖選擇進記憶體dc

//按原來背景填充客戶區,不然會是黑色

dcmem.

fillsolidrect

(rect,pdc-

>

getbkcolor()

);for(

int i=

20;i>

0;i--

)//在記憶體dc上做同樣的同心圓圖象

/*

//提供下繪製方框、畫線等方法

dcmem.fillsolidrect(0,0,nwidth,nheight,rgb(255,255,255));

//繪圖

dcmem.moveto(……);

dcmem.lineto(……);

*/pdc-

>

bitblt(0

,0,rect.

width()

,rect.

height()

,&dcmem,0,

0,srccopy)

;//將記憶體dc上的圖象拷貝到前台

dcmem.

deletedc()

;//刪除dc

該段**中已經提供了填充客戶區的方法,為了提高繪製效率,可以繼承onerasebkgnd,然後直接返回true就行。

bool test::

onerasebkgnd

(cdc* pdc)

C 實現雙緩衝

首先宣告下,這篇資料也是整理別人的資料的基礎上,總結來的。在圖形影象處理過程中,雙緩衝技術是一種比較常見的技術。窗體在響應wm paint訊息時,需要對影象進行繪製處理。如果影象繪製次數過多,重繪過於頻繁時,或者當要繪製的物件太複雜,尤其是含有點陣圖時,一般計算機便力不從心了。顯示器上就會因為重新整...

如何實現雙緩衝 vc雙緩衝

cdc memdc 首先定義乙個顯示裝置物件 cbitmap membitmap 定義乙個位圖物件 隨後建立與螢幕顯示相容的記憶體顯示裝置 memdc.createcompatibledc null 這時還不能繪圖,因為沒有地方畫 下面建立乙個與螢幕顯示相容的點陣圖,至於點陣圖的大小嘛,可以用視窗的...

vc雙緩衝 VC 雙緩衝實現方法

在圖形圖象處理程式設計過程中,雙緩衝是一種基本的技術。我們知道,如果窗體在響應wm paint訊息的時候要進行複雜的圖形處理,那麼窗體在重繪時由於過頻的重新整理而引起閃爍現象。解決這一問題的有效方法就是雙緩衝技術。因為窗體在重新整理時,總要有乙個擦除原來圖象的過程onerasebkgnd,它利用背景...