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

        ?

        隨鉆測(cè)井曲線無(wú)閃爍繪制技術(shù)

        2010-12-25 07:34:42唐海全邵才瑞李洪強(qiáng)
        測(cè)井技術(shù) 2010年5期
        關(guān)鍵詞:窗體繪圖內(nèi)存

        唐海全,邵才瑞,李洪強(qiáng)

        (1.勝利石油管理局鉆井工藝研究院,山東東營(yíng)257000;2.中國(guó)石油大學(xué)地球資源與信息學(xué)院,山東青島266555)

        隨鉆測(cè)井曲線無(wú)閃爍繪制技術(shù)

        唐海全1,邵才瑞2,李洪強(qiáng)1

        (1.勝利石油管理局鉆井工藝研究院,山東東營(yíng)257000;2.中國(guó)石油大學(xué)地球資源與信息學(xué)院,山東青島266555)

        分析了隨鉆地質(zhì)導(dǎo)向地面監(jiān)控系統(tǒng)測(cè)井曲線繪圖過程中屏幕圖形閃爍產(chǎn)生的2個(gè)原因。提出了采用不進(jìn)行背景重繪的方法消除背景刷新引起的閃爍現(xiàn)象,采用內(nèi)存DC繪圖消除測(cè)井圖形刷新造成的屏幕閃爍現(xiàn)象。給出了具體的實(shí)現(xiàn)步驟和基于Visual C++6.0平臺(tái)M FC基礎(chǔ)類庫(kù)的多文檔滾動(dòng)視圖結(jié)構(gòu)。該方法已成功運(yùn)用在隨鉆地質(zhì)導(dǎo)向測(cè)井評(píng)價(jià)系統(tǒng)中的實(shí)時(shí)曲線顯示過程中,使得鉆井?dāng)?shù)據(jù)傳輸過程中畫面平滑過渡,實(shí)現(xiàn)了圖形無(wú)閃爍連續(xù)顯示。

        隨鉆測(cè)井;測(cè)井曲線;屏幕刷新;無(wú)閃爍;位圖

        0 引 言

        鉆井過程中,隨鉆測(cè)井曲線繪圖系統(tǒng)根據(jù)鉆頭上的傳感器采集數(shù)據(jù)實(shí)時(shí)繪制測(cè)井曲線。為及時(shí)地反映井眼軌跡與地層剖面的接觸關(guān)系以評(píng)價(jià)地層特性,一般要通過快速地反復(fù)刷新屏幕作圖區(qū)來(lái)實(shí)現(xiàn)。如果采用常規(guī)繪圖方法而不加特殊處理,屏幕上常會(huì)出現(xiàn)圖形閃爍現(xiàn)象。隨著鉆井深度的增加,測(cè)井井段范圍和繪圖所涉及的數(shù)據(jù)量增大,屏幕閃爍、停頓等現(xiàn)象會(huì)極大地影響程序運(yùn)行效果。本文在實(shí)際隨鉆測(cè)井資料可視化解釋軟件開發(fā)中,采取了內(nèi)存繪圖的方法來(lái)解決這些問題。即先在內(nèi)存中畫圖,然后再把圖像拷貝到屏幕上,從而有效地解決了由于隨鉆實(shí)時(shí)繪圖而導(dǎo)致的道內(nèi)曲線顯示的屏幕閃爍問題。

        1 W indows屏幕刷新機(jī)制

        在W indow s中,應(yīng)用程序在4種情況下會(huì)發(fā)出WM_PA IN T消息請(qǐng)求重新繪圖。

        (1)當(dāng)創(chuàng)建窗體、覆蓋窗體時(shí),窗口中先前被隱藏的區(qū)域重新可見;

        (2)用戶改變窗體的大小時(shí);

        (3)程序調(diào)用 Invalidate等函數(shù)來(lái)發(fā)送 1條WM_PA IN T消息指定更新區(qū)域時(shí);

        (4)滾動(dòng)窗口用戶區(qū)以及其他會(huì)影響客戶區(qū)的操作時(shí)。

        一般在VC中,繪圖工作大多由OnDraw函數(shù)完成,OnD raw函數(shù)通過其參數(shù)pDC獲得指向屏幕設(shè)備環(huán)境的指針,繼而調(diào)用該設(shè)備環(huán)境封裝的成員函數(shù)完成圖形的繪制工作。當(dāng)窗口建立時(shí),Window s發(fā)送WM_CREA TE消息。當(dāng)窗口由于某種原因需要重繪時(shí),首先需要將窗口顯示區(qū)擦除,然后再調(diào)用OnPaint函數(shù),繼而調(diào)用OnD raw函數(shù)重新繪圖?;旧蠄D形繪制過程可分為繪制——擦除——重繪等3個(gè)部分,這其中擦除窗口顯示區(qū)的操作是必需的。因此,可以得到圖1所示的消息圖。

        圖1 W indows繪圖消息示意圖

        Window s接收WM_PA IN T消息后,就會(huì)執(zhí)行OnPaint函數(shù)進(jìn)行窗口的重繪工作。W indow s自身所提供的繪圖機(jī)制中,重繪窗口分2步進(jìn)行。首先, Window s要發(fā)送WM_ERASEBKGND消息到窗口來(lái)通知窗口擦除背景,當(dāng)窗口接收到WM_ERASEBKGND消息后,會(huì)調(diào)用OnEraseBkgnd函數(shù)來(lái)進(jìn)行處理,這會(huì)導(dǎo)致用窗口的背景色填充整個(gè)窗口。上述背景重繪之后,接著實(shí)現(xiàn)窗口圖形的重繪。如果不斷有WM_PA IN T消息請(qǐng)求繪圖,就總會(huì)有窗口背景重繪和圖形重繪交替出現(xiàn)。

        2 屏幕圖形閃爍產(chǎn)生的原因分析

        (1)屏幕背景刷新會(huì)引起閃爍現(xiàn)象。當(dāng)創(chuàng)建窗體或改變窗體大小時(shí),窗體背景會(huì)被擦除并重畫窗體上的圖形元素。此時(shí)由系統(tǒng)指定作圖區(qū)域,并且應(yīng)用程序發(fā)出WM_PA IN T消息,在該消息所對(duì)應(yīng)的窗口處理函數(shù)中,先由指定的背景刷子來(lái)擦除背景,再重畫窗體上的圖形元素。有時(shí),可能反復(fù)觸發(fā)WM_PA IN T消息。當(dāng)繪圖時(shí)間較短、測(cè)井繪圖井段很長(zhǎng)、連續(xù)滾動(dòng)測(cè)井圖時(shí),就會(huì)反復(fù)觸發(fā)WM_ PA IN T消息,通知窗體擦除窗體背景并重畫窗體上的測(cè)井圖形元素。一般情況下,缺省的背景刷子的顏色不是透明的而是有色的,例如白色,那么在1次刷新過程中,用戶就會(huì)看到繪圖區(qū)先被白色刷子刷為白色,然后又被畫上了測(cè)井曲線。由于要實(shí)時(shí)顯示測(cè)井曲線,就要反復(fù)進(jìn)行刷新,所以用戶就會(huì)看到屏幕上交替顯示著擦除背景后的白色背景和程序繪制出的隨鉆測(cè)井曲線。由于這種交替顯示的頻率較高,從而使用戶感覺屏幕閃爍。

        (2)測(cè)井圖形刷新造成屏幕閃爍現(xiàn)象。即使克服了屏幕背景刷新引起的閃爍現(xiàn)象,屏幕閃爍也仍然可能存在。測(cè)井圖形復(fù)雜,并且圖幅大,特別是在隨鉆地質(zhì)導(dǎo)向地面監(jiān)控系統(tǒng)中,框架窗口包含多個(gè)MD I子窗口,不同視窗的客戶區(qū)需同時(shí)畫多個(gè)測(cè)井圖形元素。一般的繪圖方法是把圖形元素一個(gè)一個(gè)地依次畫在相應(yīng)客戶區(qū)上,這種方法是以視窗的圖形元素為單位來(lái)畫的。此外,對(duì)于同一切分窗口而言,后畫的圖形元素會(huì)覆蓋先畫的圖形元素。所以在用戶看來(lái),前面切分窗口的圖形元素先畫,后面切分窗口的圖形元素后畫,且先畫的圖形元素處于下方,后畫的圖形元素在上方。對(duì)于一些操作,需要反復(fù)刷新客戶區(qū)。如當(dāng)主機(jī)和解釋軟件頻繁通信導(dǎo)致連續(xù)發(fā)送隨鉆測(cè)井曲線數(shù)據(jù),特別當(dāng)每次發(fā)送的數(shù)據(jù)塊較大,測(cè)井圖形道內(nèi)曲線較多,并且采用直接向屏幕繪圖,1次繪完整個(gè)井段時(shí),就會(huì)出現(xiàn)閃爍現(xiàn)象。

        3 屏幕圖形閃爍解決方法

        在開發(fā)隨鉆測(cè)井解釋系統(tǒng)中進(jìn)行繪圖時(shí),上面2類閃爍現(xiàn)象同時(shí)存在。因此,要完全解決測(cè)井繪圖屏幕閃爍問題,需要同時(shí)解決屏幕背景刷新引起的閃爍現(xiàn)象和測(cè)井圖形刷新造成屏幕閃爍現(xiàn)象。

        (1)針對(duì)背景刷新引起的閃爍,采用不進(jìn)行背景重繪的方法消除。

        由于測(cè)井繪圖本身有背景顏色,所以沒有必要讓系統(tǒng)每次刷新都要按系統(tǒng)默認(rèn)方式再去擦除和重繪背景,也就避免了擦除背景引起的閃爍。至于測(cè)井圖形本身背景顏色的重繪,可以把其看作圖形元素繪制,在解決了重繪圖形元素引起的閃爍時(shí),就不存在繪制測(cè)井圖背景引起的閃爍了。針對(duì)前面的分析,可采取以下幾種方法實(shí)現(xiàn)不執(zhí)行系統(tǒng)默認(rèn)的擦除背景操作。

        ①在窗口形成時(shí),把窗口的注冊(cè)類的默認(rèn)背景刷修改為NULL,可以實(shí)現(xiàn)不擦除背景。

        ②也可以重載OnEraseBkgnd函數(shù),并在實(shí)現(xiàn)該函數(shù)時(shí)不調(diào)用基類函數(shù)。

        對(duì)OnEraseBkgnd函數(shù)來(lái)說,如果其擦除了窗口背景,將返回非0值。因此,OnEraseBkgnd函數(shù)的最后不應(yīng)該再調(diào)用其基類的OnEraseBkgnd函數(shù),而是應(yīng)該直接返回TRUE值。

        (2)針對(duì)測(cè)井圖形刷新造成的屏幕閃爍現(xiàn)象,采用內(nèi)存DC繪圖來(lái)消除屏幕閃爍。

        這類閃爍現(xiàn)象是由于測(cè)井圖形刷新時(shí)屏幕是以視窗的元素為單位,把測(cè)井圖形元素逐個(gè)畫出來(lái)而造成的。當(dāng)以屏幕視窗為單位進(jìn)行刷新,并且速度較快時(shí),就可以消除閃爍,而在內(nèi)存DC中繪圖,然后拷貝到屏幕的方法恰恰可以實(shí)現(xiàn)這樣的功能。具體方法是把測(cè)井圖形先用內(nèi)存設(shè)備環(huán)境DC繪制在與顯示兼容的位圖中,然后從內(nèi)存環(huán)境把測(cè)井圖形復(fù)制到屏幕客戶區(qū),這樣,在測(cè)井圖形繪制到屏幕之前,已經(jīng)將圖形繪制在位圖中,然后直接復(fù)制到屏幕上,從而消除了閃爍。

        以下詳細(xì)介紹利用兼容DC在內(nèi)存中加載1幅普通單色位圖,然后將該位圖文件復(fù)制到目的窗口中的一般步驟。

        ①創(chuàng)建位圖。先利用CBitmap構(gòu)造1個(gè)位圖對(duì)象,然后利用LoadBitmap函數(shù)加載1幅位圖資源。

        ②創(chuàng)建兼容DC。其中 CreateCompatibleDC函數(shù)將創(chuàng)建1個(gè)內(nèi)存設(shè)備上下文,與參與參數(shù)pDC所指定的DC相兼容。內(nèi)存設(shè)備上下文實(shí)際上是1個(gè)內(nèi)存塊,表示1個(gè)顯示的表面。如果想把圖像復(fù)制到實(shí)際的DC中,可以先用其兼容的內(nèi)存設(shè)備上下文在內(nèi)存中準(zhǔn)備這些圖像,然后再將這些數(shù)據(jù)復(fù)制到實(shí)際DC中。

        ③將位圖選入兼容DC中。當(dāng)兼容的內(nèi)存設(shè)備上下文被創(chuàng)建時(shí),它的顯示表面是標(biāo)準(zhǔn)的單色像素寬和1個(gè)單色像素高。在應(yīng)用程序中可以使用內(nèi)存設(shè)備上下文進(jìn)行繪圖操作之前,必須將1個(gè)具有正確高度和寬度的位圖選入設(shè)備上下文。這時(shí),內(nèi)存設(shè)備上下文的顯示表面大小就由當(dāng)前選入的位圖決定了。

        ④將兼容DC中的位圖貼到當(dāng)前DC中。有多個(gè)函數(shù)(例如BitBlt函數(shù),StretchBlt函數(shù))可以以幾種不同的方式完成這一操作。圖2所示的例子是調(diào)用BitBlt函數(shù)將兼容DC中的位圖復(fù)制到當(dāng)前DC中。

        圖2 顯示位圖的步驟

        通過分析發(fā)現(xiàn),在兼容DC初始創(chuàng)建時(shí),選擇的單色位圖是通過SelectObject函數(shù)將其選入兼容DC來(lái)確定其顯示表面的大小的。但隨鉆測(cè)井解釋系統(tǒng)中沒有這樣1幅位圖,需要去創(chuàng)建1個(gè)與當(dāng)前窗口DC相兼容的DC,它的顯示表面大小與當(dāng)前客戶區(qū)大小是一致的??梢岳眉嫒菸粓D來(lái)滿足這樣的要求。CBitmap類的成員函數(shù) CreateCompatibleBitmap可以通過指定的寬和高創(chuàng)建1幅與指定DC相兼容的位圖。有了兼容位圖之后,就可以把該兼容位圖選入兼容DC中,從而確定兼容DC顯示表面的大小。

        因?yàn)榧嫒軩C實(shí)際上1塊內(nèi)存,所以利用它繪制的圖形在窗口中是看不到的,因此接下來(lái)在視圖類的OnDraw函數(shù)中就可以利用已創(chuàng)建的兼容DC對(duì)象,將該DC中的內(nèi)容復(fù)制到目的DC中,從而實(shí)現(xiàn)圖形的顯示。

        下面給出基于Visual C++6.0平臺(tái)M FC基礎(chǔ)類庫(kù)的多文檔滾動(dòng)視圖結(jié)構(gòu),開發(fā)隨鉆測(cè)井實(shí)時(shí)監(jiān)控軟件中沿設(shè)計(jì)井眼軌跡顯示隨鉆測(cè)井曲線模塊一些重要函數(shù)的參數(shù)傳遞實(shí)例。

        4 應(yīng)用效果

        這一繪圖方法已經(jīng)成功運(yùn)用在隨鉆地質(zhì)導(dǎo)向測(cè)井評(píng)價(jià)系統(tǒng)中的實(shí)時(shí)曲線顯示過程中。結(jié)果表明,與傳統(tǒng)的圖形顯示方式相比,該方法能夠有效解決由于實(shí)時(shí)繪制大數(shù)據(jù)量的圖像而產(chǎn)生的屏幕閃爍問題,實(shí)現(xiàn)了鉆井?dāng)?shù)據(jù)傳輸過程中畫面的平滑過渡,為進(jìn)一步提高隨鉆測(cè)井解釋工作的效率奠定了基礎(chǔ)。

        [1] 李 河,王祝文,李舟波,等.大數(shù)據(jù)量地球物理測(cè)井繪圖關(guān)鍵技術(shù)研究[J].地球物理學(xué)進(jìn)展,2005,20(1):71 -77.

        [2] 閆建平,蔡進(jìn)功,首祥云,等.基于Visual C++的成像測(cè)井圖像雙緩存視圖顯示[J].測(cè)井技術(shù),2007.31(6): 864-867.

        [3] 孫 鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.

        [4] 楊永國(guó).Visual C++6.0實(shí)用教程[M].北京:清華大學(xué)出版社,2004.

        [5] 譚亞軍.Window s環(huán)境中能譜圖形無(wú)閃爍快速顯示的一種方法[J].核電子學(xué)與探測(cè)技術(shù),1996,16(3):177-181.

        [6] 王潔寧,侯啟真.應(yīng)用離屏實(shí)現(xiàn)窗口無(wú)閃爍圖像顯示技術(shù)[J].中國(guó)民航學(xué)院學(xué)報(bào),2001,19(3):38-41.

        Flicker-free Rendering Technology of LWD Curves

        TANG Haiquan1,SHAO Cairui2,L IHongqiang1
        (1.Drilling Technology Research Institute of Shengli Oilfield,Dongying,Shandong 257000,China;2.College of Geo-resources and Information,China University of Petroleum,Qingdao,Shandong 266555,China)

        Analyzed are the 2 reasons causing screen flicker in the p rocess of logging curves redraw operation for LWD interp retation system.Screen flicker caused by background ref resh is elim inated by cancellation of background redraw.Screen flicker caused by logging curves refresh is eliminated by using memory DC p lotting.Provided are the detailed realization p rocedure and m ulti-document scroll view structure based on Visual C++6.0 and M FC base class library. This technology has been used in real-time curve disp lay successfully,and has made the image transition smoothly in the p rocessof drilling data transmission so as to get the flicker-free rendering of LWD curves.

        logging w hile drilling(LWD),logging curve,screen refresh,flicker free,bitmap

        1004-1338(2010)05-0479-04

        P631.83; TP31

        A

        唐海全,男,1982年生,碩士,從事隨鉆測(cè)井解釋軟件開發(fā)及井下測(cè)量?jī)x器現(xiàn)場(chǎng)技術(shù)服務(wù)工作。

        2010-05-18 本文編輯 王小寧)

        猜你喜歡
        窗體繪圖內(nèi)存
        來(lái)自河流的你
        “禾下乘涼圖”繪圖人
        “春夏秋冬”的內(nèi)存
        試談Access 2007數(shù)據(jù)庫(kù)在林業(yè)檔案管理中的應(yīng)用
        檔案天地(2019年5期)2019-06-12 05:12:02
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
        河北遙感(2015年2期)2015-07-18 11:11:14
        基于LayeredWindow的異形窗體局部刷新
        中文信息(2014年2期)2014-03-06 23:49:14
        基于內(nèi)存的地理信息訪問技術(shù)
        巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
        上網(wǎng)本為什么只有1GB?
        狠狠躁天天躁无码中文字幕图| 日韩少妇内射免费播放18禁裸乳| 精品深夜av无码一区二区| 北条麻妃在线视频观看| av中文字幕在线资源网| 亚洲视频在线免费不卡| 久久久久久久波多野结衣高潮| 亚洲av无码成人yellow| 国产在线观看网址不卡一区| 久久av粉嫩一区二区| 亚洲综合色婷婷七月丁香| 国产不卡一区二区三区免费视| 人妻少妇久久精品一区二区| 国产乱码精品一区二区三区久久| 四虎国产精品永久在线国在线| 香蕉成人啪国产精品视频综合网| 日本一区二区三区一级免费| 亚洲天堂av三区四区不卡| 天堂中文在线资源| 日本理论片一区二区三区| 国产在线观看一区二区三区av| 欧美性猛交xxxx免费看蜜桃 | 中文字幕一区二区三区97| 一区二区黄色在线观看| 久久精品黄aa片一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 日韩激情av不卡在线| 国产亚洲精品第一综合另类| 丰满人妻妇伦又伦精品国产| 中文字幕亚洲精品码专区| 久久99天堂av亚洲av| 全球中文成人在线| 中文字幕日产人妻久久| 日本韩国亚洲三级在线| 精品国内在视频线2019| 亚洲第一看片| 日本一道本加勒比东京热| 2019最新中文字幕在线观看| 精品日韩国产欧美在线观看| 国产青春草在线观看视频| 日韩精品无码一区二区三区四区|