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,它利用背景...