日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

双缓冲技术绘图

發布時間:2025/3/8 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 双缓冲技术绘图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

一、雙緩沖技術的應用

????當數據量很大時,繪圖可能需要幾秒鐘甚至更長的時間,而且有時還會出現閃爍現象,為了解決這些問題,可采用雙緩沖技術來繪圖。我們知道,如果窗體在響應WM_PAINT消息的時候要進行復雜的圖形處理,那么窗體在重繪時由于過頻的刷新而引起閃爍現象。解決這一問題的有效方法就是雙緩沖技術。因為窗體在刷新時,總要有一個擦除原來圖象的過程OnEraseBkgnd,它利用背景色填充窗體繪圖區,然后在調用新的繪圖代碼進行重繪,這樣一擦一寫造成了圖象顏色的反差。當WM_PAINT的響應很頻繁的時候,這種反差也就越發明顯。于是我們就看到了閃爍現象。

????我們會很自然的想到,避免背景色的填充是最直接的辦法。但是那樣的話,窗體上會變的一團糟。因為每次繪制圖象的時候都沒有將原來的圖象清除,造 成了圖象的殘留,于是窗體重繪時,畫面往往會變的亂七八糟。所以單純的禁止背景重繪是不夠的。我們還要進行重新繪圖,但要求速度很快,于是我們想到了使用 BitBlt函數。它可以支持圖形塊的復制,速度很快。我們可以先在內存中作圖,然后用此函數將做好的圖復制到前臺,同時禁止背景刷新,這樣就消除了閃 爍。以上也就是雙緩沖繪圖的基本的思路。

二、雙緩沖技術的實現步驟

????雙緩沖即在內存中創建一個與屏幕繪圖區域一致的對象,先將圖形繪制到內存中的這個對象上,再一次性將這個對象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度。雙緩沖實現過程如下:????

????1、在內存中創建與畫布一致的緩沖區

????2、在緩沖區畫圖

????3、將緩沖區位圖拷貝到當前畫布上

????4、釋放內存緩沖區

首先給出實現的程序,然后再解釋,同樣是在OnDraw(CDC *pDC)中: 

CDC MemDC; //首先定義一個顯示設備對象 

CBitmap MemBitmap;//定義一個位圖對象 //隨后建立與屏幕顯示兼容的內存顯示設備

MemDC.CreateCompatibleDC(NULL); //這時還不能繪圖,因為沒有地方畫 ^_^ 

//下面建立一個與屏幕顯示兼容的位圖,至于位圖的大小嘛,可以用窗口的大小,也可以自己定義

(如:有滾動條時就要大于當前窗口的大小,在BitBlt時決定拷貝內存的哪部分到屏幕上)

MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight); //將位圖選入到內存顯示設備中 //只有選入了位圖的內存顯示設備才有地方繪圖,畫到指定的位圖上 

CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap); //先用背景色將位圖清除干凈,這里我用的是白色作為背景 //你也可以用自己應該用的顏色 

MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255)); //繪圖 

MemDC.MoveTo(……); MemDC.LineTo(……); //將內存中的圖拷貝到屏幕上進行顯示 

pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY); //繪圖完成后的清理 //把前面的pOldBit選回來.在刪除MemBitmap之前要先從設備中移除它 

MemDC.SelectObject(pOldBit);  MemBitmap.DeleteObject();  MemDC.DeleteDC(); 雙緩沖(two way soft-closing)

相關鏈接:

http://www.cnblogs.com/afarmer/archive/2012/03/31/2427315.html

?

轉載于:https://my.oschina.net/u/1426828/blog/286982

總結

以上是生活随笔為你收集整理的双缓冲技术绘图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。