利用雙緩存技術(shù)解決GDI畫(huà)圖的刷新問(wèn)題_第1頁(yè)
利用雙緩存技術(shù)解決GDI畫(huà)圖的刷新問(wèn)題_第2頁(yè)
利用雙緩存技術(shù)解決GDI畫(huà)圖的刷新問(wèn)題_第3頁(yè)
利用雙緩存技術(shù)解決GDI畫(huà)圖的刷新問(wèn)題_第4頁(yè)
利用雙緩存技術(shù)解決GDI畫(huà)圖的刷新問(wèn)題_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論