国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

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

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

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

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

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

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

隨鉆測井;測井曲線;屏幕刷新;無閃爍;位圖

0 引 言

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

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

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

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

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

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

(4)滾動窗口用戶區(qū)以及其他會影響客戶區(qū)的操作時。

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

圖1 W indows繪圖消息示意圖

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

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

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

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

3 屏幕圖形閃爍解決方法

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

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

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

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

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

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

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

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

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

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

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

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

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

圖2 顯示位圖的步驟

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

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

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

4 應(yīng)用效果

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

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

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

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

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

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

[6] 王潔寧,侯啟真.應(yīng)用離屏實(shí)現(xiàn)窗口無閃爍圖像顯示技術(shù)[J].中國民航學(xué)院學(xué)報,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年生,碩士,從事隨鉆測井解釋軟件開發(fā)及井下測量儀器現(xiàn)場技術(shù)服務(wù)工作。

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

猜你喜歡
窗體繪圖內(nèi)存
來自河流的你
中國三峽(2022年7期)2022-12-02 05:28:02
“禾下乘涼圖”繪圖人
“春夏秋冬”的內(nèi)存
試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應(yīng)用
檔案天地(2019年5期)2019-06-12 05:12: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
基于LayeredWindow的異形窗體局部刷新
中文信息(2014年2期)2014-03-06 23:49:14
基于內(nèi)存的地理信息訪問技術(shù)
巧設(shè)WPS窗體控件讓表格填寫更規(guī)范
上網(wǎng)本為什么只有1GB?
原阳县| 苍南县| 武宁县| 慈利县| 普陀区| 德钦县| 威海市| 民乐县| 商丘市| 华亭县| 普陀区| 宜章县| 福泉市| 徐水县| 遂宁市| 宜川县| 高邑县| 蒲城县| 吐鲁番市| 读书| 石林| 腾冲县| 旺苍县| 天门市| 连云港市| 彰化市| 长岛县| 广宗县| 四会市| 定远县| 福贡县| 长汀县| 堆龙德庆县| 萨嘎县| 如皋市| 平昌县| 西贡区| 沁水县| 承德县| 靖州| 凯里市|