久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

用內(nèi)存設(shè)備環(huán)境(Memory Device Context)與GetClipBox函數(shù)(獲得需要重繪的區(qū)域)實現(xiàn)無閃爍的高效繪圖

 年華似水匆匆 2014-05-29

// Get the invalidate rectangle  

CRect clipRect;  

pDC->GetClipBox(clipRect);  

  

// Create memory device context  

CDC memDc;  

memDc.CreateCompatibleDC(pDC);  

CBitmap memBitmap;  

memBitmap.CreateCompatibleBitmap(pDC, clipRect.Width(), clipRect.Height());  

  

// Erase the background  

memDc.FillSolidRect(0, 0, clipRect.Width(), clipRect.Height(), RGB(211, 211, 211));  

  

pDC->BitBlt(clipRect.left, clipRect.top, clipRect.Width(), clipRect.Height(), &memDc, 0, 0, SRCCOPY);  

  

memDc.DeleteDC();  

memBitmap.DeleteObject();  

 

下面對以上代碼進行說明:

(1)獲得需要繪圖的矩形(Rectangle)

    通常使用GetClientRect()函數(shù)獲得整個區(qū)域,。但是,通常情況下并不是整個區(qū)域都要繪制,,比如:你用另一個窗口遮住了需要繪制的窗口的一部分,,當你移動遮擋窗口時,只需要繪制露出的那部分就行了,犯不著把整個窗口都繪制一遍,,這樣效率很低下。我們用CDC::GetClipBox函數(shù)獲得需要繪制的矩形區(qū)域(即無效區(qū)域),。

(2)實現(xiàn)無閃爍的繪圖

    想要消除閃爍,,當然首先要知道為什么產(chǎn)生閃爍。那樣我們才知道這樣避免閃爍,。

    閃爍是由背景色與繪圖產(chǎn)生強烈反差引起的,。也就是說我在繪圖前先要擦掉我繪圖區(qū)域的以前圖片,否則將會與以前的圖片發(fā)生混亂,,這可以用在黑板上寫字的例子做理解,,如果在我寫字之前,黑板上有字,,那么我在寫字的話,,你保證下面看的人愿意嗎?呵呵,。所以,,我先擦掉原來的字,再寫,。OK,。在計算機中類似,但是我不是用黑板擦,,我是用一種顏色(背景色)涂滿我要繪圖的區(qū)域,,然后再繪圖。這樣,,涂色,,繪圖,涂色,,繪圖.............,,讓人的眼睛產(chǎn)生了閃爍的感覺。那我們要是先把圖畫好,,再顯示出來,,那閃爍的效果就沒了。這類似與動畫片,,大家知道動畫片的每一幀都是一個完整的圖片,,快速播放,是沒有閃爍效果的,。要是在每幀之間插個白色圖片(類似圖背景色),,就有閃爍效果了。

    所謂內(nèi)存設(shè)備環(huán)境,就是我們在內(nèi)存中建立一個與物理設(shè)備兼容的設(shè)備環(huán)境,。再創(chuàng)建一個與設(shè)備兼容的位圖,,內(nèi)存設(shè)備環(huán)境在這個位圖上繪圖,然后再把畫好的位圖拷貝到物理設(shè)備環(huán)境,。這樣就是上面我提到的消除閃爍的方法的實現(xiàn),。

 

// 創(chuàng)建與設(shè)備上下環(huán)境兼容的設(shè)備環(huán)境

CDC memDc;
memDc.CreateCompatibleDC(pDC);

 

// 創(chuàng)建一個與設(shè)備兼容的位圖(寬,高與需要繪圖的區(qū)域?qū)?yīng))

CBitmap memBitmap;
memBitmap.CreateCompatibleBitmap(pDC, clipRect.Width(), clipRect.Height());

 

//

// Erase the background
memDc.FillSolidRect(0, 0, clipRect.Width(), clipRect.Height(), RGB(211, 211, 211));

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多