在自己畫的視窗中,有時候會有閃爍現象。為什麼會有閃爍現象呢?其實是因為程式在畫視窗時需要用背景色清空顯示區域,然後再畫。由於這兩者的反差比較大,就會被人眼睛捕捉到,感覺閃爍。
雙緩衝就是先在記憶體中把圖畫好,然後直接複製到螢幕上去,這樣的反差就比較小,也就不覺得閃爍了。
wtl中有現成的雙緩衝類實現,可以很方便的使用就達到效果。
cdoublebufferimpl 在atlframe.h中。
1.首先繼承自cdoublebufferimpl
class2.由於雙緩衝類中已經處理了wm_erasebkgnd 和wm_paint訊息,所以需要從你的**中刪除對這些訊息的處理。然後加上雙緩衝的訊息處理即可。tctrl:
public
cwindowimpl
< tctrl>,
public
wtl::cdoublebufferimpl
// 繼承雙緩衝類
begin_msg_map(tctrl)3.增加乙個dopaint函式,函式宣告如下:// message_handler(wm_paint, onpaint)
chain_msg_map( wtl::cdoublebufferimpl
)end_msg_map()
void4.將原來onpaint函式中的**移到dopaint中,注意原來的cpaintdc需要改用引數中的cdchandlerdopaint(cdchandle dc);
voidok,編譯吧。tctrl::dopaint( cdchandle dc )
vc畫圖不閃爍的方法(雙緩衝技術)
走近wtl--gdi篇
visual c++中實現雙緩衝的基本原理
C 零食 WTL中使用雙緩衝避免閃爍
雙緩衝的原理可以這樣形象的理解 把電腦螢幕看作一塊黑板。首先我們在記憶體環境中建立乙個 虛擬 的黑板,然後在這塊黑板上繪製複雜的圖形,等圖形全部繪製完畢的時候,再一次性的把記憶體中繪製好的圖形 拷貝 到另一塊黑板 螢幕 上。採取這種方法可以提高繪圖速度,極大的改善繪圖效果。例如在ondraw 函式中...
零食小餅乾
吃貨的最高境界就是把喜歡吃的東西用自己的雙手做出來 哈哈哈.廢話不多說了,直接開始做餅乾吧!材料 低筋麵粉 554克 糖粉 150克 無鹽黃油 227克 雞蛋 3個 奶粉 60克 1 黃油隔水融化,用打蛋器攪拌均勻。2 分別加入糖粉,奶粉,攪拌均勻。要加糖粉或者糖霜類,這樣才可以融化哦!3 雞蛋分次...
ZZULI 吃零食 貪心
時間限制 1 sec 記憶體限制 128 mb 快要到期末了,pht在這兩天好忙啊。經過幾個小時的奮戰,他終於把實驗報告寫完了,但是他因此錯過了午飯時間,pht覺得自己好餓。這時他發現在旁邊xcp的位置上有好多零食,pht決定偷偷的拿一點他的零食吃 一共有n種零食,每種零食有ai袋 為了使xcp不容...