C 零食 WTL中使用雙緩衝避免閃爍

2022-03-22 12:18:31 字數 1035 閱讀 8560

在自己畫的視窗中,有時候會有閃爍現象。為什麼會有閃爍現象呢?其實是因為程式在畫視窗時需要用背景色清空顯示區域,然後再畫。由於這兩者的反差比較大,就會被人眼睛捕捉到,感覺閃爍。

雙緩衝就是先在記憶體中把圖畫好,然後直接複製到螢幕上去,這樣的反差就比較小,也就不覺得閃爍了。

wtl中有現成的雙緩衝類實現,可以很方便的使用就達到效果。

cdoublebufferimpl 在atlframe.h中。

1.首先繼承自cdoublebufferimpl

class 

tctrl:

public

cwindowimpl

< tctrl>,

public

wtl::cdoublebufferimpl

// 繼承雙緩衝類

2.由於雙緩衝類中已經處理了wm_erasebkgnd 和wm_paint訊息,所以需要從你的**中刪除對這些訊息的處理。然後加上雙緩衝的訊息處理即可。

begin_msg_map(tctrl)

// message_handler(wm_paint, onpaint)

chain_msg_map( wtl::cdoublebufferimpl

)end_msg_map()

3.增加乙個dopaint函式,函式宣告如下:

void 

dopaint(cdchandle dc);

4.將原來onpaint函式中的**移到dopaint中,注意原來的cpaintdc需要改用引數中的cdchandler

void 

tctrl::dopaint( cdchandle dc )

ok,編譯吧。

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不容...