• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      五性綜??梢暬D形框架開發(fā)與應(yīng)用

      2016-02-22 04:39:06江志煒
      關(guān)鍵詞:圖元畫布鼠標(biāo)

      江志煒

      (中航工業(yè)綜合技術(shù)研究所,北京 100028)

      五性綜??梢暬D形框架開發(fā)與應(yīng)用

      江志煒

      (中航工業(yè)綜合技術(shù)研究所,北京 100028)

      基于五性綜保相關(guān)的仿真建模軟件需求,參考了國外一些著名的建模軟件,借鑒了WPF(Windows Presentation Foundation,用戶界面框架)的圖形化技術(shù),采用面向?qū)ο竽J皆O(shè)計(jì),實(shí)現(xiàn)了支持仿真平臺圖像化建模的圖形框架。

      五性綜保;可視化;仿真;圖形框架;畫布;圖元

      隨著科學(xué)技術(shù)的進(jìn)步,現(xiàn)代裝備變的越來越復(fù)雜,如何提高裝備的戰(zhàn)備完好性(或者可用性),需要對裝備的全壽命周期內(nèi)的可靠性、維修性、測試性、安全性、保障性(簡稱五性綜保)信息進(jìn)行收集、分析和預(yù)測。

      利用模型仿真方法,借助計(jì)算機(jī)技術(shù),可以更加準(zhǔn)確地得到五性綜保不同類型的指標(biāo)分析數(shù)據(jù),為裝備的設(shè)計(jì)、研發(fā)、使用提供正確的指導(dǎo),比傳統(tǒng)的數(shù)學(xué)解析方法得到的數(shù)據(jù)更加精確有效,同時(shí)工作效率提高。

      國外有很多基于語言建模的仿真工具,如使用Modelica、Altarica語言編寫代碼生成模型。它們的缺點(diǎn):用戶需要具備語言編程的能力,在編程過程中大量的輸入,很容易導(dǎo)致語法出錯(cuò)。而圖形化建模,利用計(jì)算機(jī)可視化技術(shù),對工程中的設(shè)備進(jìn)行抽象,轉(zhuǎn)化為屏幕上的圖形,使得用戶建模更加簡單、直觀、高效。

      我們參與開發(fā)的五性綜保仿真工具,有很多都實(shí)現(xiàn)了具有可視化建模的能力,例如測試性建模與分析工具通過圖形化進(jìn)行對信號流建模,效能仿真平臺使用網(wǎng)絡(luò)圖的建模方式進(jìn)行保障任務(wù)建模;安全性仿真與分析平臺基于圖形模塊化實(shí)現(xiàn)Altaric建模等等。

      1 總體結(jié)構(gòu)

      圖形框架以高效、快速、穩(wěn)定,并且能夠支持不同開發(fā)環(huán)境為開發(fā)目標(biāo)。總體劃分為3大塊,核心框架(GraphicEditor)、基于.Net4.0的圖形擴(kuò)展(GraphicEditorExtension)以及圖形持久化(Serializer)。如圖1所示。

      1.1 核心框架

      圖形框架的核心,包含畫布、圖元,封裝了圖形框架最常用的功能,提供具有擴(kuò)展功能的接口。作為一個(gè)獨(dú)立的基礎(chǔ)框架,通過高層編程抽象,使得開發(fā)人員在不同開發(fā)環(huán)境下都能進(jìn)行快速開發(fā)。a

      圖1 總體結(jié)構(gòu)

      1.2 圖形擴(kuò)展

      圖形框架,在.Net4.0的基礎(chǔ)上對圖形框架進(jìn)行了常用擴(kuò)展,實(shí)現(xiàn)了IPanelOwner類,豐富了多種圖元,及配套實(shí)現(xiàn)各個(gè)圖元的測量、繪畫、新增處理,提供基礎(chǔ)菜單剪切、復(fù)制、粘貼菜單,刪除功能。

      1.3 圖形持久化

      定義了圖和圖元的持久化接口。

      1.4 畫布

      畫布(DrawingPanel)作為圖形框架最重要的組成,對布局、繪畫、交互操作進(jìn)行協(xié)調(diào)管理,同時(shí)通過開放接口,業(yè)務(wù)系統(tǒng)可以根據(jù)實(shí)際需求進(jìn)行擴(kuò)展。

      1.5 圖元

      作為畫布上可顯示元素,每個(gè)圖元都繼承自VisualElement(可操作圖元抽象類),VisualElement作為繪圖對象,所有的布局、繪畫、焦點(diǎn)、事件都是針對它來進(jìn)行,同時(shí)VisualElement也是可操作的對象,如選擇、拖動(dòng)、拉伸操作。

      布局、繪畫、交互、事件、持久化和圖形擴(kuò)展見本文后續(xù)內(nèi)容。

      2 核心框架分層

      為了簡化和清晰圖形框架的實(shí)現(xiàn)邏輯,對圖形框架的內(nèi)部邏輯進(jìn)行歸類和劃分,圖形框架從設(shè)計(jì)上分為布局層、繪畫層、交互層,層次結(jié)構(gòu)如圖2。

      圖2 層次結(jié)構(gòu)

      2.1 布局層

      在3層結(jié)構(gòu)中,布局層處于最底層,當(dāng)布局層接收到布局請求,通過對圖元進(jìn)行測量、排列,生成布局信息,然后把布局信息通知到繪畫層進(jìn)行繪制。

      這一層的布局計(jì)算由布局引擎(GraphicLayout Engine)來實(shí)現(xiàn),布局引擎在測量圖元的過程中通過測量工廠獲取相應(yīng)的圖元測量器(IMeasure),然后根據(jù)測量器來計(jì)算圖元的尺寸,最終決定畫布的尺寸范圍。布局引擎是框架內(nèi)部類,不對外公開。

      圖形框架不提供任何滾動(dòng)支持,當(dāng)觸發(fā)布局,畫布尺寸發(fā)生變化,通過事件通知外部,由外部來實(shí)現(xiàn)滾動(dòng)。

      2.2 繪畫層

      加載Graphic模型文件或外部操作導(dǎo)致Graphic模型的布局發(fā)生變化,框架通知繪畫層進(jìn)行重新繪制。

      繪畫層根據(jù)布局和樣式信息,將圖元繪畫到畫板上。繪畫層根據(jù)功能把繪畫劃分為3類,圖元繪畫(IRender)、選擇過程繪畫(ISelectingRender)、改變尺寸繪畫(ISizeElementRender)。

      2.2.1 圖元繪畫

      圖形框架定義了IRender接口,負(fù)責(zé)協(xié)調(diào)和通知圖元繪制,具體的繪畫過程由外部應(yīng)用程序根據(jù)自身采用的技術(shù)來實(shí)現(xiàn),比如WPF可以通過DrawingContext或者Graphics進(jìn)行繪畫。圖形化建模大部分情況下都使用到矩形、橢圓、直線,在GraphicEditorExtension層中對上述3種圖元進(jìn)行了繪畫封裝(RectangleRender、EllipseRender、PolyLineRender),同時(shí)業(yè)務(wù)系統(tǒng)可以進(jìn)一步對其進(jìn)行擴(kuò)展。

      Render()方法針對圖元外觀進(jìn)行繪畫,其中繪畫要素包括位置、尺寸、形狀、背景色、文本、邊框、邊框?qū)挾鹊鹊?。Render()方法的接收參數(shù)為IGraphicContext(繪圖上下文)、 VisualElement(繪畫圖元),從接收參數(shù)可見圖元并非直接繪制到DrawingPanel上,而是繪制到IGraphicContext對象中。

      IGraphicContext由IPanelOwner統(tǒng)一創(chuàng)建,DrawingPanel只負(fù)責(zé)管理繪制及刷新。派生類圖元可以重寫Render()方法來實(shí)現(xiàn)個(gè)性化繪制。

      RenderSelectedAdorner()方法在圖元被選中時(shí)調(diào)用,用于繪制帶裝飾器的外觀,繪制原理與Render()方法一致。

      RenderForDraging()方法用于繪制圖元拖動(dòng)效果,比Render()方法多了位置參數(shù)。

      2.2.2 選擇過程繪畫

      選擇過程繪畫是對畫布效果的一種繪畫,而圖元選中狀態(tài)繪畫是針對圖元,兩者響應(yīng)的操作行為是不一樣的。選擇過程繪畫是按住鼠標(biāo),然后框選圖元的過程,當(dāng)畫布接收到LeftMouseDown事件,記錄當(dāng)前鼠標(biāo)位置Point1,及鼠標(biāo)Down狀態(tài),接著鼠標(biāo)移動(dòng),響應(yīng)MouseMove事件,同時(shí)記錄鼠標(biāo)移動(dòng)的位置,DrawingPanel通過繪畫工廠(IRenderFactory)取到選擇繪畫器進(jìn)行選擇過程效果繪畫。GraphicEditorExtension實(shí)現(xiàn)了ISelectingRender類,通過繪制矩形的方式把選中的圖元“框”選起來。

      2.2.3 改變圖繪畫

      對選中的一個(gè)或多個(gè)圖元進(jìn)行拉伸,分3步進(jìn)行繪制。首先遍歷所有被選中的圖元,并詢問它們的尺寸,計(jì)算選中區(qū)域的位置及尺寸,然后調(diào)用方法Render()繪制出帶有選中狀態(tài)修飾的矩形框;接著按照鼠標(biāo)拖動(dòng)的方向及距離,調(diào)用方法RenderSizing()來繪制選中區(qū)域的邊框;最后松開鼠標(biāo),按選中區(qū)域的縮放比例,使用RenderSizingPointElement()方法同步所有被“框”圖元的尺寸及位置。GraphicEditorExtension提供了ISizeElementRender的實(shí)現(xiàn)類。

      2.3 交互層

      交互層負(fù)責(zé)對外部各類編輯操作進(jìn)行封裝,同時(shí)維護(hù)了已處理的編輯操作列表,保證所有編輯操作處理都可以進(jìn)行撤銷、恢復(fù)。

      在用戶與圖形框架的交互過程中,框架把用戶界面的請求轉(zhuǎn)換為對Graphic模型的操作請求,這個(gè)過程中需要在各個(gè)層次進(jìn)行邏輯轉(zhuǎn)換,以完成用戶的請求操作。

      在交互層中需要處理兩個(gè)問題,一是與輸入設(shè)備的交互管理,二是編輯操作的封裝。

      2.3.1 輸入設(shè)備的交互管理

      圖形框架允許外部模塊對框架的交互行為進(jìn)行擴(kuò)展,因此對于輸入設(shè)備的交互管理也必須提供必要的擴(kuò)展性支持。

      在圖形框架中需要處理鍵盤和鼠標(biāo)的輸入事件,在處理過程中,要求當(dāng)前光標(biāo)或者鼠標(biāo)所在的圖元都能夠有機(jī)會處理該事件,如有些圖元要求右鍵鼠標(biāo),彈出菜單,列出屬性編輯項(xiàng);雙擊鼠標(biāo),進(jìn)入下一層子模型。同樣,鍵盤事件在處理不同的圖元也可能有不同的要求。

      基于上述要求,對輸入事件進(jìn)行封裝,分別為鼠標(biāo)左鍵單擊操作、鼠標(biāo)右鍵單擊操作、鼠標(biāo)雙擊操作、鼠標(biāo)移動(dòng)操作進(jìn)行封裝,如圖3所示。

      圖3 鼠標(biāo)交互接口

      2.3.2 圖元增加處理

      處理鼠標(biāo)點(diǎn)擊畫布添加圖元的處理行為,包括MouseDown、MouseUp行為處理(業(yè)務(wù)應(yīng)用系統(tǒng)可以在此進(jìn)行個(gè)性化處理邏輯,如添加圖元的合法性校驗(yàn)),通過CreateElement返回新建圖元。GraphicEditorExtension實(shí)現(xiàn)部分常用圖元添加處理。

      2.3.3 編輯操作的封裝

      作為可視化建模的圖形控件,必須具備基本的圖形編輯操作功能,包括添加、刪除、位置移動(dòng)、尺寸拉伸,并且支持多個(gè)圖元一并操作,同時(shí)還需要支持對操作的撤銷、恢復(fù)功能。

      在業(yè)務(wù)系統(tǒng)的開發(fā)過程中,不提倡開發(fā)人員直接對Graphic模型(Children子圖元)進(jìn)行操作,同時(shí)圖形框架本身也需要操作Graphic模型完成界面編輯功能,兩者的要求和操作方法是一致的,因此可對編輯操作進(jìn)行封裝,形成統(tǒng)一對外接口。GraphicEditor提供的實(shí)現(xiàn)如圖4。

      為保證對Graphic模型的編輯可進(jìn)行撤銷、恢復(fù),圖形框架引入U(xiǎn)ndo與Redo機(jī)制,建立編輯操作管理類OperationManager,其內(nèi)部維護(hù)兩個(gè)操作堆棧,分別是Execute堆棧和UnExecute堆棧。編輯操作執(zhí)行時(shí),調(diào)用操作管理類的方法ExecuteOperation()將編輯操作壓入到Execute堆棧中,并執(zhí)行Redo方法;如果用戶需要撤銷這次操作,則從Execute堆棧中彈出棧頂元素(編輯操作)并執(zhí)行Undo方法,同時(shí)把編輯操作壓入到UnExecute堆棧中;同樣如用戶要恢復(fù)此操作時(shí),則取出UnExecute堆棧中的棧頂操作并執(zhí)行Execute方法,同時(shí)把編輯操作壓入到Execute堆棧中。

      圖4 操作類的類圖

      3 其它功能

      3.1 縮放

      縮放用于縮小和放大顯示,DrawingPanel提供Scale屬性設(shè)置,當(dāng)Scale被設(shè)置之后,畫布上所有圖元都按比例進(jìn)行布局調(diào)整并重繪。Scale初始值為1,如果設(shè)置為大于1,即放大,設(shè)置為小于1,即縮小,如Scale=1.2,即放大1.2倍。

      3.2 持久化

      Graphic Designer定義圖的持久化器(IGraphic Serializer)并實(shí)現(xiàn)XML的持久化類。序列化過程通過遍歷子圖元,并調(diào)用圖元持久化器進(jìn)行單點(diǎn)序列化;反序列逆過程,根據(jù)XML節(jié)點(diǎn)標(biāo)簽找圖元持久化器進(jìn)行反序列化。

      4 圖形框架應(yīng)用

      圖形框架已經(jīng)應(yīng)用到我們的開發(fā)項(xiàng)目中,比如測試性建模與分析工具、效能仿真平臺、安全性仿真與分析平臺、IETM的工作流實(shí)現(xiàn)。其中,測試性建模與分析工具是一款基于信號流建模,通過利用模塊化推理方法,為用戶提供測試性、診斷性的解決方案,要求能夠?qū)π盘柫鬟M(jìn)行可視化建模,同時(shí)要求通過可視化方式提供測試性、診斷性的解決方案;效能仿真平臺借助計(jì)算機(jī)模擬技術(shù)進(jìn)行裝備保障性綜合試驗(yàn),對裝備的戰(zhàn)備完好性及任務(wù)持續(xù)性進(jìn)行分析,為保障方案評價(jià)及驗(yàn)證提供技術(shù)手段,要求平臺具備對保障任務(wù)的可視化建模;事故動(dòng)態(tài)推演仿真平臺基于功能的系統(tǒng)安全性分析,要求把Altarica建模方法通過簡便易用的圖形化建模方式來實(shí)現(xiàn)。下面介紹安全性仿真與分析平臺對圖形框架的應(yīng)用。

      4.1 安全性仿真與分析平臺需求

      安全性仿真與分析平臺主要用于輔助SAE ARP4754《高度集成或復(fù)雜飛機(jī)系統(tǒng)適航審定考慮》標(biāo)準(zhǔn)流程的安全性工作,開展需求分析與功能分解、安全性分析、評估與驗(yàn)證工作等工作,將安全性工作與系統(tǒng)研制過程相結(jié)合,增加安全性工作結(jié)果的一致性和正確性,并提高安全性工作迭代的效率,及時(shí)為研制過程提供反饋。

      安全性仿真與分析平臺以Altarica模型為核心,基于Altarica模型自動(dòng)進(jìn)行安全性和可靠性仿真分析。用戶通過模型設(shè)計(jì)功能來創(chuàng)建Altarica模型,模型設(shè)計(jì)模塊包含增加模型元素、編輯模塊屬性、刪除模型元素、連接模型元素、模型復(fù)制和粘貼、創(chuàng)建模型層級、撤銷和恢復(fù)等功能。

      以反應(yīng)堆泵水系統(tǒng)為例進(jìn)行介紹,用Altarica語言進(jìn)行模型描述如圖5。

      泵水系統(tǒng)由蓄水池、水泵和反應(yīng)堆組成,腳本描述的功能很簡單,蓄水池有水,水泵就能正常工作,把水抽到反應(yīng)堆。在圖形建模中,蓄水池、水泵、反應(yīng)堆等實(shí)體對象使用模塊來表達(dá),實(shí)體間的傳遞關(guān)系通過連接線來體現(xiàn),如圖6。

      4.2 Altarica模型設(shè)計(jì)功能實(shí)現(xiàn)

      4.2.1 圖元擴(kuò)展

      Altarica的模型元素相對來說比較簡單,包括模塊(Brick Element)、端口(Connector Element)以及連接鏈(Connection Element)3種,分別繼承矩形(Rectangle Element)、橢圓(Ellipse Element)、直線(DirectionConnectionElement)。這些圖元不單只是可視化元素,而且還是Altarica數(shù)據(jù)的載體,除了具備VisualElement行為之外,還持有相應(yīng)的模型實(shí)體。

      圖5 泵水系統(tǒng)的Altarica描述

      圖6 泵水系統(tǒng)的圖形建模

      4.2.2 繪畫擴(kuò)展

      在業(yè)務(wù)處理中,模塊被抽象為具有數(shù)據(jù)傳遞行為的塊狀元素,在繪畫的時(shí)候,需要把輸入輸出端繪制出來。而端口分輸入、輸出,以便在展現(xiàn)上能更好區(qū)分,需要用不同背景顏色進(jìn)行繪制。連接線與一把直線差異不大,簡單擴(kuò)展即可。

      4.2.3 添加處理擴(kuò)展

      添加處理擴(kuò)展更多體現(xiàn)在業(yè)務(wù)行為的處理上。添加模塊需要默認(rèn)生成一系列的數(shù)據(jù),比如端口、狀態(tài)、邏輯關(guān)系、事件轉(zhuǎn)移等等。連接兩個(gè)端口,需要進(jìn)行合法性校驗(yàn)。

      4.2.4 鼠標(biāo)輸入事件擴(kuò)展

      雙擊模塊、端口彈出屬性編輯界面。

      5 結(jié)束語

      本文從五性綜保的一些建模軟件需求出發(fā),提出了使用可視化方式來實(shí)現(xiàn)模型構(gòu)建的方案,基于創(chuàng)新技術(shù)實(shí)現(xiàn)的圖形框架,為五性綜保的建模軟件提供了基礎(chǔ)控件。

      對圖形框架的設(shè)計(jì)實(shí)現(xiàn),以及安全性仿真與分析平臺的應(yīng)用介紹,總結(jié)得出圖形框架能簡便、快速地支持五性綜保業(yè)務(wù)系統(tǒng)的應(yīng)用開發(fā)。

      圖形框架支持WinForm、WPF、Silverlight等.Net開發(fā)環(huán)境,對于Java平臺目前不能直接使用,需要轉(zhuǎn)義框架代碼,將在今后繼續(xù)完善。

      [1]Antoine B.Rauzy.AltaRica Data-Flow Language Specifcation -Version 2.1[R].Ecole Polytechnique,2013.

      [2]MacDonald,Matthew.Pro WPF in C# 2010:Windows Presentation Foundation in .NET 4[M].3rd ed.Apress.2010.

      (編輯:勞邊)

      V240.2

      C

      1003-6660(2016)06-0041-05

      10.13237/j.cnki.asq.2016.06.010

      猜你喜歡
      圖元畫布鼠標(biāo)
      商業(yè)模式畫布
      商界評論(2022年12期)2022-03-06 16:43:01
      一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運(yùn)用
      學(xué)術(shù)出版物插圖的編排要求(一):圖注
      聯(lián)鎖表自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
      Progress in Neural NLP: Modeling, Learning, and Reasoning
      Engineering(2020年3期)2020-09-14 03:42:00
      為什么要在畫布上割一刀?
      讓鮮花在畫布上盛開
      基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實(shí)現(xiàn)
      軟件(2016年12期)2016-02-13 05:58:14
      大師的畫布
      45歲的鼠標(biāo)
      隆回县| 隆尧县| 沙湾县| 师宗县| 改则县| 大城县| 禄丰县| 康平县| 蒙城县| 靖边县| 弥渡县| 鸡泽县| 东乌珠穆沁旗| 苗栗市| 睢宁县| 兴海县| 固镇县| 黄大仙区| 泽库县| 调兵山市| 固阳县| 水富县| 望都县| 白银市| 枣阳市| 秀山| 巨野县| 育儿| 鄂伦春自治旗| 孙吴县| 安阳市| 武隆县| 临城县| 莎车县| 西青区| 察雅县| 陆川县| 游戏| 虹口区| 疏附县| 湘潭县|