GDI 中雙緩衝的基本寫法

2021-09-30 05:36:26 字數 821 閱讀 4887

在vc中經常需要對介面進行重繪,其中為了保持介面不閃爍,就需要用到雙緩衝處理方法。詳細的過程如下所示:

cdcdcmemory

;dcmemory

.createcompatibledc

(&dc

); cbitmap

bmp;

bmp.

createcompatiblebitmap

(&dc

,1024,768);

dcmemory

.selectobject

(&bmp);

graphics

_graphics

(dcmemory

.m_hdc

);

_graphics

.drawimage

(_pimage

,0,0,1024,768);

//這是在gdi+中的寫法。dc

.bitblt

(0,0,1024,768,&

dcmemory

,0,0,

srccopy);

_graphics

.releasehdc

(dcmemory

.m_hdc

);

dcmemory

.deletedc

();

bmp.

deleteobject

();注意:

onerasebkgnd(cdc* pdc)需要返回true。

GDI 中的雙緩衝

1 使用.net框架的預設雙緩衝 1 在應用程式中使用雙緩衝的最簡便的方法是使用 net framework 為窗體和控制項提供的預設雙緩衝。通過將 doublebuffered 屬性設定為 true。this.doublebuffered true 2 使用 setstyle 方法可以為 wind...

GDI 雙緩衝實現

gdi 使用雙緩衝繪圖 我再來詳細解釋一下剛才實現雙緩衝的具體步驟 1 在記憶體中建立一塊 虛擬畫布 bitmap bmp new bitmap 600,600 2 獲取這塊記憶體畫布的graphics引用 graphics g graphics.fromimage bmp 3 在這塊記憶體畫布上繪...

GDI雙緩衝的實現

gdi雙緩衝其實就是將我們所需要畫在視窗dc上的物件預先畫在記憶體dc上,再將記憶體dc畫到視窗dc上,這樣就可以減少過多對視窗dc操作而產生閃爍現象。簡單的實現 如下 hdc hdc getdc hwnd hwnd為視窗控制代碼 int nwidth rc.right rc.left rc為視窗的...