亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VC++6.0實現(xiàn)無閃爍連續(xù)實時曲線

        2014-06-27 05:46:27王玉菡曾自強
        關(guān)鍵詞:對話框繪圖繪制

        王玉菡,曾自強

        (1.重慶理工大學(xué)電子信息與自動化學(xué)院,重慶 400054; 2.川慶鉆探工程有限公司測井公司,重慶 400021)

        基于VC++6.0實現(xiàn)無閃爍連續(xù)實時曲線

        王玉菡1,曾自強2

        (1.重慶理工大學(xué)電子信息與自動化學(xué)院,重慶 400054; 2.川慶鉆探工程有限公司測井公司,重慶 400021)

        工業(yè)現(xiàn)場常需要實時采集數(shù)據(jù)并在軟件中將數(shù)據(jù)動態(tài)顯示出來。運用VC++6.0編程工具,在基本對話框中的靜態(tài)文本控件上,利用雙緩沖技術(shù)實現(xiàn)無閃爍時間驅(qū)動的動態(tài)實時曲線,并在實踐中取到了較好的效果。

        VC++6. 0;基本對話框;雙緩沖;實時曲線

        在生產(chǎn)和實驗過程中,常常需要對被測對象進行實時數(shù)據(jù)采集,然后將數(shù)據(jù)傳輸?shù)焦た貦C,以動態(tài)曲線的方式顯示出來,以便人們對現(xiàn)場的了解和控制。因此顯示動態(tài)實時曲線在工控自動化的界面程序設(shè)計中是一種不可缺少的功能。它不但可以給人呈現(xiàn)出一種直觀的視覺效果,更重要的是能夠?qū)崟r地顯示、存儲采集到的數(shù)據(jù)[1]。

        在實現(xiàn)實時動態(tài)曲線的過程中會發(fā)現(xiàn)編寫出來的曲線經(jīng)常會出現(xiàn)閃爍的情況,而且隨著顯示界面復(fù)雜程度的增加和刷新時間的加快,閃爍越加明顯,嚴重影響了軟件的效果[2]。為了解決這一問題,可以采用第三方的軟件來進行處理。例如:一是可以使用組態(tài)軟件來進行開發(fā);二是使用別人開發(fā)的類和DLL庫。對于組態(tài)軟件,雖然功能較齊全,能夠大大縮短工業(yè)監(jiān)控系統(tǒng)開發(fā)研制的周期,提高系統(tǒng)的可靠性,但它們的價格相對比較昂貴,帶有加密狗,而且對于小型監(jiān)控系統(tǒng)來說,有許多功能用不上,造成了資源的浪費[3]。對于第二種方法,雖然有不少類可以實現(xiàn)動態(tài)曲線,但是大多數(shù)實例都是基于單文檔的動態(tài)曲線,沒有X軸動態(tài)時間坐標,而用得最多的基本對話框就更少了,并且這些封裝好了的庫文件不可修改,引入這些控件或類后將在工程中加入不少文件,使得工程文件變得龐大。

        本文利用VC++6.0平臺,基于MFC基本對話框中的靜態(tài)文本控件,利用雙緩沖技術(shù)實現(xiàn)無閃爍時間驅(qū)動的動態(tài)實時曲線[4]。

        1 圖形閃爍問題分析

        地面監(jiān)控系統(tǒng)軟件在定時器的控制下每隔一段時間就采集一次數(shù)據(jù),并將數(shù)據(jù)顯示成曲線。Windows中負責(zé)系統(tǒng)與繪圖程序之間的信息交換和圖形輸出的是GDI(圖形設(shè)備接口)。GDI建立在抽象層之上,與設(shè)備無關(guān),使程序員無需關(guān)心硬件設(shè)備及設(shè)備驅(qū)動就可以將應(yīng)用程序的輸出轉(zhuǎn)化為硬件設(shè)備上的輸出。在Windows的MFC中,發(fā)送繪圖的消息為WM_PAINT,它的響應(yīng)函數(shù)是On-Paint()函數(shù),所有的GDI繪圖程序都在OnPaint ()函數(shù)中。當窗口發(fā)生變化,創(chuàng)建窗體或調(diào)用了Invalidate(),InvalidateRect()等函數(shù)時就會觸發(fā)WM_PAINT消息重繪窗口;在重繪窗口時,先響應(yīng)OnEraseBkgnd()函數(shù)利用背景色擦除窗口顯示區(qū),再調(diào)用OnPaint()函數(shù)重新繪圖;當背景色和顯示窗口顏色相差較大且刷新時間較快時,由于這樣的一擦一繪,造成了圖像顏色的反差,就出現(xiàn)了閃爍問題[5-7]。如果背景顏色差別較大閃爍就更為明顯。

        為了解決閃爍問題,單純的禁止背景重繪是不夠的。因為如果這樣,每次繪制圖像時都沒有將原來的圖像清除,造成了圖像的殘留,于是在窗體重繪時,畫面往往會變得亂七八糟[8]。要實現(xiàn)快速的繪圖必須采用雙緩沖繪圖技術(shù),其基本思路是先在內(nèi)存中作圖,然后用BitBlt函數(shù)將作好的圖復(fù)制到前臺。

        2 圖形閃爍問題解決方法

        2.1 雙緩沖

        在基本對話框中,為了實現(xiàn)曲線繪制的無閃爍必須采用雙緩沖。所謂雙緩沖,就是指繪圖不是直接繪制在當前設(shè)備上(前端緩沖),而是首先創(chuàng)建一個與當前設(shè)備環(huán)境兼容的內(nèi)存設(shè)備環(huán)境(后端緩沖),所有繪圖工作都在內(nèi)存中完成,最后再利用BitBlt將內(nèi)存設(shè)備環(huán)境中的內(nèi)容拷貝到前端設(shè)備環(huán)境,步驟見圖1。由于所有的繪圖操作都是在后端緩沖區(qū)內(nèi)完成的,而在屏幕上只執(zhí)行一次圖形操作,因而能消除由多重繪制所引起的圖形閃爍。

        圖1 雙緩沖步驟

        2.2 調(diào)用OnPaint()函數(shù)和UpdateWindow()函數(shù)

        所有文獻都提到了雙緩沖,但是僅使用該方法是不夠的。由于MFC具有消息機制,為了重繪一般是在定時器OnTimer()函數(shù)中使用Invalidate ()函數(shù)觸發(fā)WM_PAINT消息,從而調(diào)用OnPaint ()函數(shù)進行繪圖。但是由于WM_PAINT消息的優(yōu)先級很低,需要等消息隊列中的其他消息發(fā)送完后才能被處理,所以調(diào)用Invalidate等函數(shù)后窗口不會立即重繪,還是會出現(xiàn)閃爍。本文的做法是在OnTimer()函數(shù)中直接調(diào)用OnPaint()函數(shù),不使用函數(shù)觸發(fā)WM_PAINT消息,同時在OnPaint ()函數(shù)中在獲取了靜態(tài)文本框窗口句柄pWnd后使用它的UpdateWindow()函數(shù)。UpdateWindow與Invalidate類似,都可以觸發(fā)WM_PAINT消息,不同之處在于UpdateWindow發(fā)送的WM_PAINT消息立即被執(zhí)行無需排隊,這樣就解決了閃爍問題。

        3 編程實例

        采集數(shù)據(jù)的實時繪制是一個經(jīng)常需要用到的功能。本文以數(shù)據(jù)采集為例來說明如何消除曲線的閃爍。整個采集系統(tǒng)框圖如圖2所示。首先地面軟件每一秒鐘向下位機發(fā)送命令請求單片機發(fā)送數(shù)據(jù),單片機判斷請求并作出相應(yīng)的響應(yīng)。如果數(shù)據(jù)格式正確則回應(yīng),否則不回應(yīng)。上位機收到下位機發(fā)送上來的數(shù)據(jù)后,根據(jù)固定格式讀取出數(shù)據(jù),并以曲線的方式顯示出來。數(shù)據(jù)及其計算的結(jié)果還被存儲在數(shù)據(jù)庫中,以便查詢。歷史曲線以曲線的方式顯示歷史數(shù)據(jù)。

        圖2 采集系統(tǒng)框圖

        采用本文方法的曲線繪制程序主要步驟:

        之后進行前后效果對比。由于是每秒采集一次數(shù)據(jù)即每秒畫一次圖,當程序最小化再放大或是快速拖動時會出現(xiàn)短暫的無曲線現(xiàn)象(見圖3)。采用本文的方法后,無論怎么拖動、遮擋、最小化都不會出現(xiàn)閃爍(見圖4)。當停止定時器,中斷了與下位機的通訊后,畫面固定,也不會消失。

        圖3 使用無閃爍方法前

        圖4 使用無閃爍方法后

        4 結(jié)束語

        本文較好地解決了對話框繪圖閃爍的問題,能夠?qū)崿F(xiàn)實時滾動的動態(tài)曲線,且時間能夠相應(yīng)地變化。當停止了計時器時,曲線并不會消失。當再次啟動定時器時,程序?qū)⒏鶕?jù)當前的時間重新繪圖。掌握了這種方法之后,用戶可以根據(jù)自己的需要加以擴展和改變,就能得到復(fù)雜的動態(tài)曲線。程序更改后可以同時繪制多條曲線,也可以設(shè)置曲線顏色、線型等屬性。

        由于本文中對時間精度要求不高,一秒一次,所以采用SetTimer定時器即可。若要提高要求應(yīng)采用多媒體定時器。為了更好地繪制不同形狀的曲線,最好使用GDI++,這樣效果更佳。

        [1]王玉菡.Visual C++編程實現(xiàn)動態(tài)曲線的4種方法[J].重慶工學(xué)院學(xué)報:自然科學(xué)版,2008,22(6):95-97.

        [2]陳喜陽,張克危,彭玉成.VC在監(jiān)測系統(tǒng)中圖形刷新問題的研究[J].工業(yè)控制計算機,2004,17(4):27-29.

        [3]魏慶勇,王陽明,陳久康.VC環(huán)境下工業(yè)監(jiān)控軟件趨勢曲線顯示畫面的實現(xiàn)[J].機電一體化,2001(6):62-64.

        [4]寇光杰,武玉強.基于VC++線程的動態(tài)數(shù)據(jù)曲線的繪制方法[J].計算機應(yīng)用研究,2004(5):178-180.

        [5]程巖,湯永佐,劉巖.基于VC++實現(xiàn)實時數(shù)據(jù)監(jiān)控和顯示方法[J].山東科學(xué),2010(2):83-85.

        [6]唐海全,邵才瑞,李洪強.隨鉆測井曲線無閃爍繪制技術(shù)[J].測井技術(shù),2010,34(5):479-482.

        [7]江建國,溫少營,張瑞楠.基于雙緩沖技術(shù)的GDI+無閃爍繪圖[J].計算機應(yīng)用,2012,32(S2):136-139.

        [8]張亮.基于雙緩沖技術(shù)的VC++圖形刷新技術(shù)的原理和實現(xiàn)[J].福建電腦,2010(6):110.

        [9]Thompson R D.MFC開發(fā)人員參考手冊[M].北京:機械工業(yè)出版社,1998.

        [10]Davis Chapman.學(xué)用Visual C++6.0[M].駱長樂,譯.北京:清華大學(xué)出版社,1999.

        (責(zé)任編輯 楊黎麗)

        Realization of Continuous Real-time Curve without Flicker Based on VC++6.0

        WANG Yu-h(huán)an1,ZENG Zi-qiang2
        (1.School of Electronic Information and Automation,Chongqing University of Technology,Chongqing 400054,China;
        2.Chuanqing Drilling Logging Company,Chongqing 400021,China)

        In the industry field,we often need to collect real-time data and display it in the software.This paper mainly introduces using the VC++6.0 programming to realize dynamic driven real-time curve without flicker by double buffering technology on the static text control of the dialog based box.

        VC++6. 0;dialog based;double buffering;real-time curve

        TP39

        A

        1674-8425(2014)04-0123-04

        10.3969/j.issn.1674-8425(z).2014.04.026

        2014-01-18

        王玉菡(1981—),女,河北冀州人,碩士,主要從事智能儀器研究。

        王玉菡,曾自強.基于VC++6.0實現(xiàn)無閃爍連續(xù)實時曲線[J].重慶理工大學(xué)學(xué)報:自然科學(xué)版,2014(4): 123-126.

        format:WANG Yu-h(huán)an,ZENG Zi-qiang.Realization of Continuous Real-time Curve without Flicker Based on VC+ +6.0[J].Journal of Chongqing University of Technology:Natural Science,2014(4):123-126.

        猜你喜歡
        對話框繪圖繪制
        Art on coffee cups
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        正?;謴?fù)虛擬機
        Bootlace Worms’Secret etc.
        放學(xué)后
        童話世界(2018年17期)2018-07-30 01:52:02
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        電子測試(2018年4期)2018-05-09 07:28:32
        Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
        河北遙感(2015年2期)2015-07-18 11:11:14
        在轉(zhuǎn)變中繪制新藍圖
        快速抓取對話框中的完整信息
        電腦迷(2012年22期)2012-04-29 20:30:54
        好男人日本社区www| 日产分东风日产还有什么日产 | 无码国产精品一区二区免费式芒果 | 国产精品日韩经典中文字幕| 狠狠躁天天躁中文字幕| 色狠狠色狠狠综合一区| 日本岛国大片不卡人妻| 亚洲自拍偷拍一区二区三区| 久久久免费精品re6| 黄 色 人 成 网 站 免 费| 操B小视频国产| 亚洲天堂亚洲天堂亚洲色图| 免费视频成人片在线观看| 亚洲色偷偷色噜噜狠狠99| 国产人成视频免费在线观看| 国产一区二区三区av免费| 黑森林福利视频导航| 亚洲伊人久久大香线蕉综合图片| 日本高清不卡一区二区三区| av在线播放男人天堂| 狠狠色噜噜狠狠狠狠米奇777| 在线观看网址你懂的| 国产成人亚洲综合二区| 亚洲精品一区二区三区麻豆| 最新国产av无码专区亚洲| 国产真实伦视频在线视频| 中文字幕一区二区三区日日骚 | 白白色发布在线播放国产| 精品熟女av中文字幕| 妺妺窝人体色www看人体| 夜色阁亚洲一区二区三区| 熟女人妻一区二区在线观看| 国产婷婷色一区二区三区深爱网| 四虎影视永久地址www成人| 亚洲欧美国产日产综合不卡| 熟女免费观看一区二区| 免费a级毛片18禁网站app| av在线色| 国产av一区麻豆精品久久| 五十六十日本老熟妇乱| 亚洲女人被黑人巨大进入|