1. 解決屏幕閃爍的雙緩衝技術:
1) 將所要繪製的元素一次性繪製到後臺DC,然後將後臺DC拷貝到屏幕DC上.
2) 重寫擦除窗體背景函數BOOL OnEraseBkgnd(CDC* pDC) ,直接return tuere.
2.用對象來管理GDI對象:在構造函數中創建GDI對象,在析構函數中釋放.
3. 髒矩形技術實現快速平滑的動畫繪製,實現步驟:
1)將背景窗口內容拷貝到一個內存DC中dcScreen.
2) 根據移動圖元上一位置和當前位置計算被弄髒的矩形區域dirty_rect。
3)聲明一個內存DC drawDC,大小爲dirty_rect.
4) 將dcScreen的dirty_rect.所在內容拷貝到drawDC上.
5) 將圖元繪製到drawDC(根據當前位置,計算offset).
6)拷貝drawDC到屏幕DC的dirty_rect.
4.圖元半透明繪製技術, 在髒矩形技術的第四步基礎上:
5) 將圖元繪製到內存DC drawDC2,並設置一個背景色back_color.
6) 將drawDC和drawDC2位圖信息進行帶color_key(back_color)的alpha混合疊加.
7)拷貝drawDC到屏幕DC的dirty_rect.
注意: drawDC和drawDC2位圖信息進行alpha混合疊加時,在32 位下使用DIB,其它的
使用DDB,否則速度極慢.
我測試過此效果,速度還是可以,比GDI+快得多了.