利用雙緩存技術解決GDI畫圖的刷新問題_第1頁
利用雙緩存技術解決GDI畫圖的刷新問題_第2頁
利用雙緩存技術解決GDI畫圖的刷新問題_第3頁
利用雙緩存技術解決GDI畫圖的刷新問題_第4頁
利用雙緩存技術解決GDI畫圖的刷新問題_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、利用雙緩存技術提高GDI+的繪圖效果摘要在進行圖像處理的軟件中,一般的圖形處理程序需要大量的繪圖操作,首要解決的就是繪圖的效率和效果問題:前者表現(xiàn)在性能方面,是否有延遲,一個小小的交互操作是否要等上幾秒才能看到結果;后者表現(xiàn)在重新繪制或刷新的過程中出現(xiàn)閃爍?本文主要介紹GDI+程序中引用雙緩沖技術以解決重繪時出現(xiàn)的閃爍問題提高繪圖效果。關鍵字:GDI+;雙緩存;快速;緩存位圖;效果引言在使用GDI+的實際的繪圖中,繪圖窗口內容或大小每改變一次,都要調用Paint事件進行重繪操作,該操作會使畫面重新刷新一次以維持窗口正常顯示。這樣的效率非常低,不僅達不到性能要求,而且還可能會出現(xiàn)閃爍的現(xiàn)象。刷新

2、過程中會導致所有圖元重新繪制,而各個圖元的重繪操作并不會導致Paint事件發(fā)生,因此窗口的每一次刷新只會調用Paint事件一次。窗口刷新一次的過程中,每一個圖元的重繪都會立即顯示到窗口,因此整個窗口中,只要是圖元所在的位置,都在刷新,而刷新的時間是有差別的,閃爍現(xiàn)象自然會出現(xiàn)。所以說,此時導致窗口閃爍現(xiàn)象的關鍵因素并不在于Paint事件調用的次數(shù)多少,而在于各個圖元的重繪。根據(jù)以上分析可知,當圖元數(shù)目不多時,窗口刷新的位置也不多,窗口閃爍效果并不嚴重;當圖元數(shù)目較多時,繪圖窗口進行重繪的圖元數(shù)量增加,繪圖窗口每一次刷新都會導致較多的圖元重新繪制,窗口的較多位置都在刷新,閃爍現(xiàn)象自然就會越來越嚴

3、重。特別是圖元比較大繪制時間比較長時,閃爍問題會更加嚴重,因為時間延遲會更長。1、雙緩存技術為了解決畫圖的效率問題,我們引進了雙緩存技術,雙緩沖技術早在GDI的程序開發(fā)中,就已經開始使用。在普通的繪圖模式下,圖像處理程序是按照設計的順序,將被繪制的元素一個接一個地在目標設備上進行繪制。何謂“雙緩沖”?它的基本原理就是:先在內存中開辟一塊虛擬畫布,然后將所有需要畫的圖形先畫在這塊“虛擬畫布”上,最后在一次性將整塊畫布畫到真正的窗體上。因為所有的單個圖形的繪制都不是真正的調用顯示系統(tǒng)“畫”,所以不會占用顯示系統(tǒng)的開銷,極大的提高的繪圖效率。其原理如圖1所示。13 圖1:雙緩存繪制原理示意2、引進雙

4、緩存技術解決實際中的問題采用雙緩沖技術,由于繪圖操作大部份都在內存中完成,所以繪圖速度沒有太大的制約。在. NET 中,由于GDI+的引入,實現(xiàn)雙緩沖更加簡單:首先建立緩沖區(qū),從緩沖區(qū)取得Graphics 對象,使用其進行繪圖;然后將緩沖區(qū)內已繪制好的圖像拷貝到目標設備上顯示。3詳細說明一下雙緩存的具體實現(xiàn)步驟:1、 在內存中建立一塊“虛擬畫布”:Bitmap bmp = new Bitmap(600, 600;2、 獲取這塊內存畫布的Graphics 引用:Graphics g = Graphics.FromImage(bmp;3、 在這塊內存畫布上繪圖: 4、 將內存畫布畫到窗口中: 5、最后雙緩存的實現(xiàn): 3、結論以上方法可以用來去除GDI畫圖時的閃爍問題,雙緩存技術的引用提高了圖像程序顯示的性能,當然在緩沖區(qū)還可以實現(xiàn)很多高級的圖形操作,比如透明,合成等等,這取決于具體的算法。因此用好緩存不僅可以極大地提高程序的交互速度,而且會讓應用軟件有一個流暢的圖形顯示。當進行復雜的繪圖操作時,使用雙緩沖技術,可以有效地防止畫面的閃爍。參考文獻:2 MaheshChand.GD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論