版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2010年第6期福建電腦基于雙緩沖技術(shù)的VC+圖形刷新技術(shù)的原理和實現(xiàn)張亮(揚州工業(yè)職業(yè)技術(shù)學(xué)院電子信息工程系江蘇揚州225127【摘要】:在VC+中,如果采用傳統(tǒng)的圖形繪制技術(shù),當程序窗體的內(nèi)容經(jīng)常刷新時,會導(dǎo)致屏幕或窗口出現(xiàn)閃爍,嚴重影響顯示效果。而采用雙緩沖技術(shù)則可以很好的解決這一問題。本文主要分析了雙緩沖技術(shù)的原理,介紹了其和傳統(tǒng)圖形刷新技術(shù)的不同之處,并給出了在VC中使用雙緩沖技術(shù)進行繪圖的程序框架,對同類研究有一定的參考作用?!娟P(guān)鍵詞】:VC+;雙緩沖;繪圖1、引言在Windows這樣一個圖形化操作系統(tǒng)下進行可視化程序設(shè)計時,程序界面的設(shè)計對整個程序的成功起著非常關(guān)鍵的作用。從本質(zhì)
2、上來說,我們在Windows環(huán)境下看到的各種可視化元素,如菜單、窗口、圖像等,都是在一定的指令控制下,由操作系統(tǒng)繪制完成的。因此,如果想在開發(fā)Windows程序時繪制圖形,使用windows sdk提供的底層API函數(shù)是最直接的方法。然而,底層API函數(shù)雖然功能強大,但使用起來較為繁瑣,同時開發(fā)者必須對系統(tǒng)的底層原理有較深的理解,才能很好的掌握。因此,對開發(fā)者的要求較高。為了解決這一問題,VC+使用MFC對系統(tǒng)底層的繪圖API函數(shù)進行了封裝,提供了一系列用于繪圖的類和對象,開發(fā)者可以使用面向?qū)ο蟮拈_發(fā)方法,十分方便的使用這些類和對象在程序中進行圖形的繪制??梢哉f,VC+的出現(xiàn),大大簡化了在Wi
3、ndows平臺下進行圖形繪制的難度。然而,傳統(tǒng)的VC+圖形繪制技術(shù)有一個缺陷,即當程序窗體的內(nèi)容刷新時,會導(dǎo)致屏幕或窗口出現(xiàn)閃爍,嚴重影響顯示效果。本文對出現(xiàn)這一現(xiàn)象的原理進行了深入分析,同時給出了采用雙緩沖技術(shù)的解決方案。2、圖形閃爍原理用VC+開發(fā)程序,本質(zhì)是對各種消息進行相應(yīng),對圖形進行繪制也是如此。在程序代碼中,一般將繪制圖形的代碼放在OnPaint或OnDraw函數(shù)中,當系統(tǒng)產(chǎn)生WM_PAINT消息時,上述函數(shù)會自動進行消息相應(yīng),從而實現(xiàn)圖形的繪制。在圖形很少改變或者程序窗口很少刷新時,這樣的處理方法沒有任何問題,但是如果程序窗體的內(nèi)容經(jīng)常刷新,圖形就會出現(xiàn)閃爍。很多人認為出現(xiàn)這樣的
4、現(xiàn)象是圖形刷新速度過快而造成的,實際上,在程序中,比如最小化最大化,移動窗體,覆蓋等等都會引起圖形的重繪。然而通過實驗,我們可以發(fā)現(xiàn),刷新速度并不是造成圖形閃爍的最根本的原因。通過編寫一個刷新速度很慢的應(yīng)用程序可以發(fā)現(xiàn),即使程序窗口的刷新速度很慢,但是在每次刷新的時候仍然存在閃爍的問題,只是閃爍沒有快速刷新時那么明顯。在本質(zhì)上,造成圖形閃爍的原因?qū)嶋H上是相鄰兩幀圖像之間存在的巨大差異。而造成這一差異的原因又在于VC本身的處理機制。在VC中,窗體每次刷新時,將自動調(diào)用OnEraseBkgnd函數(shù),該函數(shù)的作用是利用系統(tǒng)背景色填充窗體繪圖區(qū),在填充完了之后,系統(tǒng)才會重新調(diào)用繪圖代碼對窗口進行重繪。
5、在默認情況下,系統(tǒng)背景色一般為白色,因此每次重繪時,相當于在相鄰兩幀圖像間插入了一幀全白的圖像。而白色一般與繪圖顏色差別很大,因此,這樣一擦一寫造成了圖象顏色的巨大反差。當WM_PAINT的響應(yīng)很頻繁的時候,這種反差也就越發(fā)明顯。于是我們就看到了閃爍現(xiàn)象。要解決這一問題,我們首先直接能想到的方法就是禁用OnEraseBkgnd函數(shù),避免系統(tǒng)對窗口進行白色填充。但是這樣的處理方法又會帶來新的問題,因為每次繪制圖象的時候都沒有將原來的圖象清除,造成了圖象的殘留,于是窗體重繪時,如果沒有重繪所有的區(qū)域,畫面往往會變的混亂。所以單純的禁止背景重繪是不夠的,還必須重新對窗體的所有區(qū)域進行重繪。由于要對所
6、有區(qū)域進行重繪,傳統(tǒng)的方法可能就不夠迅速,此時,就必須采用雙緩沖技術(shù)進行處理。3、雙緩沖技術(shù)的原理和實現(xiàn)雙緩沖圖形刷新技術(shù)顧名思義是采用雙緩存實現(xiàn)的。傳統(tǒng)的繪圖方式實際上是一種單緩沖。在Windows中每一種設(shè)備都在內(nèi)存中有一個設(shè)備描述表與其對應(yīng),這個設(shè)備描述表實際上就是一個內(nèi)存緩沖區(qū)。傳統(tǒng)的繪圖中我們是將圖形繪制在設(shè)備描述表緩沖區(qū)中,然后由gdi自動的將設(shè)備描述表中的圖像拷貝到顯存中進行顯示。這樣一個自動的拷貝過程屏蔽了傳統(tǒng)的繪圖方式是單緩沖的實質(zhì),使我們感覺到我們是在直接操縱顯存一樣。雙緩沖圖形刷新技術(shù)在內(nèi)存中有兩快緩存,除了設(shè)備描述表以外還有一快需要手動建立的與設(shè)備描述表緩沖區(qū)相兼容的后
7、備緩沖區(qū)。繪圖過程中,首先將圖形繪制在后備緩沖區(qū)中,然后再手動的將后備緩沖區(qū)中的圖像拷貝到前端緩沖區(qū)中,再由gdi自動將前端緩沖區(qū)中的圖像拷貝到顯存完成圖形的顯示過程。在實際中,我們使用BitBlt函數(shù)。它可以支持圖形塊的復(fù)制,速度很快。我們可以先在內(nèi)存中作圖,然后用此函數(shù)將做好的圖復(fù)制到前臺,同時禁止背景刷新,這樣就消除了閃爍。以上也就是雙緩沖繪圖的基本的思路。在VC中,我們可以按照以下步驟來使用雙緩沖技術(shù)進行圖形的繪制:1、創(chuàng)建與窗口設(shè)備描述表(前端緩沖區(qū)兼容的內(nèi)存設(shè)備描述表(后端緩沖區(qū)。2、創(chuàng)建與內(nèi)存設(shè)備描述表相兼容的位圖并將該位圖選入內(nèi)存設(shè)備描述表中。3、將圖形繪制在內(nèi)存設(shè)備描述表中。
8、4、將內(nèi)存設(shè)備描述表中的內(nèi)容拷貝到窗口設(shè)備描述表。5、釋放設(shè)備描述表句柄、位圖等資源。示例代碼如下:/以下代碼應(yīng)放置于OnPaint或OnDraw函數(shù)中CDC MemDC;/首先定義一個顯示設(shè)備對象CBitmap MemBitmap;/定義一個位圖對象MemDC.CreateCompatibleDC(NULL;/隨后建立與屏幕顯示兼容的內(nèi)存顯示設(shè)備MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight;建立一個與屏幕設(shè)備描述表兼容的位圖MemDC.SelectObject(&MemBitmap;/將位圖選入到內(nèi)存設(shè)備描述表MemDC.FillSo
9、lidRect(m_rect,RGB(0,0,0;/用背景色將位圖清除干凈/具體的繪圖代碼省略,可根據(jù)不同項目具體實現(xiàn)pDC-BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY;/將后備緩沖區(qū)中的圖形拷貝到前端緩沖區(qū)MemBitmap.DeleteObject(;MemDC.DeleteDC(;/繪圖完成后的清理4、結(jié)論雙緩沖技術(shù)原理并不復(fù)雜,實現(xiàn)起來也很簡單,但是效果非常理想,能完美解決刷新時圖形閃爍的問題,這一技術(shù)在使用VC進行圖形繪制時,是必不可少的技術(shù),值得(下轉(zhuǎn)第137頁1102010年第6期福建電腦 (上接第115頁!(上接第110頁!所有使用
10、VC 的程序開發(fā)人員學(xué)習(xí)。參考文獻:1侯捷.深入淺出MFCM.華中科技大學(xué)出版社,20012潘愛民;王國印.Visual C+技術(shù)內(nèi)幕(第4版M.清華大學(xué)出版社,2009準,定義一系列SOAP 消息頭塊(Header Block 以包含數(shù)字簽名、加密信息和安全令牌等安全信9。針對用戶身份信息數(shù)據(jù)庫而言,我們可以把用戶個人數(shù)據(jù)存儲為密文形式,可以使用對稱密鑰算法,例如DES 算法,在用戶注冊操作中,我們要求用戶額外輸入一些字符串作為DES 加密的私鑰,由指定的加密處理邏輯將用戶的個人數(shù)據(jù)轉(zhuǎn)換為密文形式,然后再存入相應(yīng)的數(shù)據(jù)表中,這樣可以增強數(shù)據(jù)庫的安全性。5、總結(jié)隨著Internet 技術(shù)發(fā)展和
11、高等教育體制改革的不斷深入,高職院校的系務(wù)管理信息化、網(wǎng)絡(luò)化建設(shè)越來越顯得舉足輕重,其對學(xué)院的發(fā)展、人才的培養(yǎng)都起著重要的作用。該系統(tǒng)能夠方便、及時地和用戶進行交互,單位對系務(wù)工作的管理也將由以前的單一縱向管理向不同用戶、不同部門間橫向管理轉(zhuǎn)變,提高了設(shè)備的利用率,降低了成本,它使系務(wù)日常的管理方法發(fā)生了很大的變化,減輕了工作人員的勞動強度,提高了管理的質(zhì)量和工作效率。同時系統(tǒng)中的每個模塊都有它的獨立性和整體性,可根據(jù)需要增加系統(tǒng)的功能模塊,易于維護和升級。參考文獻:1曲學(xué)勇,我國高職教育管理的現(xiàn)狀分析及改革建議J.教育與職業(yè),2003,15:1.2 2008年全國教育事業(yè)發(fā)展統(tǒng)計公報3楊敬偉
12、,薛與倩,劉振鵬.基于C/S 和B/S 混合模式的軟件結(jié)構(gòu)體系J.河北大學(xué)學(xué)報,2006,26(3:315-3184劉佩賢.Web Services 體系結(jié)構(gòu)和應(yīng)用研究D.北京:北京化工大學(xué),2008.5陳江.教師檔案管理系統(tǒng)的開發(fā)J.中國科技信息,2007,22:114-114.6楊小影,徐紅霞.基于B /S 結(jié)構(gòu)學(xué)生管理系統(tǒng)的實現(xiàn)J.寧波職業(yè)技術(shù)學(xué)院學(xué)報,2009,13(2:73-75.7黃晟.基于面向服務(wù)架構(gòu)的交通規(guī)費系統(tǒng)研究與實現(xiàn):D.湖南:湖南大學(xué),2007.8張媛,王坤俠.基于.NET 技術(shù)的學(xué)生管理系統(tǒng)的設(shè)計與實現(xiàn)J.科技資訊,2006,35:8-9.9石偉鵬、楊小虎.基于SOA
13、P 協(xié)議規(guī)范的Web Service 安全基礎(chǔ)規(guī)范(WS-Secrity J.計算機應(yīng)用與研究,2003,2.庫,學(xué)籍數(shù)據(jù)庫包括汕頭職業(yè)技術(shù)學(xué)院所有在讀學(xué)生的學(xué)籍信息,導(dǎo)入時是Excel 格式。在每次等級考試成績出來之后教務(wù)員可以導(dǎo)入學(xué)生等級考試成績,以便系統(tǒng)可以判斷學(xué)生可以報考的類型。3.在導(dǎo)入學(xué)籍數(shù)據(jù)庫完成之后教務(wù)員可以根據(jù)需要隨時維護學(xué)籍數(shù)據(jù)庫的信息。4.在每一次報名開始前教務(wù)員可以初始化數(shù)據(jù)庫,包括:設(shè)置學(xué)生的默認登錄密碼,更新學(xué)生的報名權(quán)限和清除學(xué)生上次報名的狀態(tài)。在設(shè)置學(xué)生的報名權(quán)限時可以根據(jù)學(xué)生的系別和年級分開設(shè)置,也可以將其綜合起來進行設(shè)置。5.在學(xué)生完成報名后教務(wù)員可以管理報
14、名信息,并對報名信息進行統(tǒng)計,統(tǒng)計時可以按年級分級別來統(tǒng)計,而且學(xué)生在報名時還可以選擇是否參加學(xué)校組織的輔導(dǎo),統(tǒng)計的內(nèi)容包括報名的人數(shù)和想?yún)⒓虞o導(dǎo)的人數(shù)。6.統(tǒng)計完報名信息后教務(wù)員可以以Excel 的格式導(dǎo)出報名信息。報名信息包括B 級、四級和六級的報名表,報考人數(shù)匯總表和報名班級統(tǒng)計表。而且報名信息可按不同校區(qū)分別導(dǎo)出。7.教務(wù)員可以下載已導(dǎo)出的表格并且進行管理員信息的維護。8.在非報名期間教務(wù)員可以設(shè)置禁止學(xué)生報名。3.系統(tǒng)測試本系統(tǒng)在2009年2月份測試完畢,在測試過程中主要運用測試法,并對系統(tǒng)做了壓力測試,取得良好的效果。本系統(tǒng)于3月份投入運行,至今已經(jīng)順利完成3次英語等級考試報名任務(wù),受到用戶的好評。如圖2是系統(tǒng)后臺管理模塊中的導(dǎo)入數(shù)據(jù)庫子模塊。4.結(jié)論汕職院英語等級考試報名系統(tǒng)整合了數(shù)據(jù)庫技術(shù)和網(wǎng)站開發(fā)技術(shù),實現(xiàn)了當前主流在線信息處理系統(tǒng)的基本功能,有效的解決了學(xué)生英語等級考試報名工作量巨大的問題,極大的提高了教務(wù)處的工作效率。但是系統(tǒng)的設(shè)計也存在一些缺陷,比如對學(xué)生報名權(quán)限的設(shè)置方面不能按照班級,專業(yè)或個人來設(shè)置;在管理學(xué)籍數(shù)據(jù)庫方面也沒有提供模糊查詢。因此,本人希望在第一版的基礎(chǔ)上總結(jié)使用中出現(xiàn)的問題,然后設(shè)計并開發(fā)第二版,讓學(xué)校的教
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球元件參數(shù)測試儀行業(yè)調(diào)研及趨勢分析報告
- 2024年科普知識競賽試題庫及答案(共70題)
- 2024年青少年禁毒知識競賽小學(xué)組題庫及答案(共60題)
- 2025年度特種鋼材進口與國內(nèi)銷售合作協(xié)議
- 2025年度應(yīng)急響應(yīng)個人勞務(wù)派遣服務(wù)合同示范文本2篇
- 二零二五年度車庫租賃及停車場運營管理合同4篇
- 數(shù)字化背景下學(xué)校師德師風(fēng)教育的創(chuàng)新發(fā)展
- 數(shù)學(xué)教育與兒童發(fā)展游戲化教學(xué)的意義
- 二零二五年度鋁扣板藝術(shù)裝飾施工合同3篇
- 二零二五年度采砂場環(huán)境保護與修復(fù)合同3篇
- JB-T 8532-2023 脈沖噴吹類袋式除塵器
- 深圳小學(xué)英語單詞表(中英文)
- 護理質(zhì)量反饋內(nèi)容
- 山東省濟寧市2023年中考數(shù)學(xué)試題(附真題答案)
- 抖音搜索用戶分析報告
- 板帶生產(chǎn)工藝熱連軋帶鋼生產(chǎn)
- 鉆孔灌注樁技術(shù)規(guī)范
- 2023-2024學(xué)年北師大版必修二unit 5 humans and nature lesson 3 Race to the pole 教學(xué)設(shè)計
- 供貨進度計劃
- 國際尿失禁咨詢委員會尿失禁問卷表
- 彌漫大B細胞淋巴瘤護理查房
評論
0/150
提交評論