• 
    

    
    

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

      基于 MS.NET的 GDI+在電力系統(tǒng)矢量圖中的應(yīng)用

      2012-02-09 06:13:50胡潤(rùn)滋胡鵬飛
      關(guān)鍵詞:圖元繪圖繪制

      胡潤(rùn)滋,胡鵬飛

      (1.重慶市電力公司調(diào)度控制中心,重慶 400014;2.重慶市電力公司檢修分公司,重慶 400039)

      0 引言

      矢量圖形系統(tǒng)是電力系統(tǒng)分析、計(jì)算、設(shè)計(jì)、監(jiān)控、管理等諸多應(yīng)用系統(tǒng)實(shí)現(xiàn)圖形可視化的基礎(chǔ),現(xiàn)有的電力系統(tǒng)矢量圖形系統(tǒng),大多數(shù)是利用傳統(tǒng)的Windows圖形設(shè)備接口技術(shù)GDI構(gòu)建起來的,對(duì)各種電氣元件圖元的繪制及圖元的點(diǎn)選、旋轉(zhuǎn)、平移、縮放等操作,需要進(jìn)行圖元坐標(biāo)變換等大量數(shù)值計(jì)算。圖形程序設(shè)計(jì)比較復(fù)雜,開發(fā)工作量大、代碼維護(hù)比較困難[1-4]。而MS.NET框架的類層次結(jié)構(gòu),較好地封裝了新一代的圖形設(shè)備接口技術(shù)GDI+,大大簡(jiǎn)化了基于Windows和Web的圖形應(yīng)用系統(tǒng)的開發(fā)難度,利用GDI+技術(shù)進(jìn)行電力系統(tǒng)矢量圖形系統(tǒng)的設(shè)計(jì)開發(fā),避免了傳統(tǒng)技術(shù)的弊端,具有較好的實(shí)際應(yīng)用價(jià)值。

      本文結(jié)合在電力系統(tǒng)繼電保護(hù)綜合計(jì)算及信息管理系統(tǒng)的實(shí)際項(xiàng)目開發(fā)過程中的體會(huì),介紹GDI+核心技術(shù)在電力系統(tǒng)矢量圖形系統(tǒng)開發(fā)中的具體應(yīng)用。實(shí)際應(yīng)用表明,所采用的技術(shù)手段較傳統(tǒng)方法簡(jiǎn)便靈活,設(shè)計(jì)簡(jiǎn)單、開發(fā)工作量小,效率高,程序代碼更易于維護(hù)、復(fù)用率高,不需要進(jìn)行大量的坐標(biāo)變換數(shù)值計(jì)算,運(yùn)行速度也較快。

      1 基于GDI+技術(shù)圖元繪制及變換

      1.1 GDI+技術(shù)

      GDI+是最新的Windows圖形設(shè)備編程接口技術(shù),是傳統(tǒng)GDI技術(shù)的升級(jí)。GDI是Windows API中的圖形編程接口,是面向過程的圖形處理函數(shù)集合。GDI+完全集成到MS.NET Framework中,用于圖形編程,同時(shí)也是面向?qū)ο蟮摹DI+技術(shù)的所有功能包含在MS.NET Framework的6個(gè)命名空間中,這6個(gè)空間如圖1所示。

      本文只探討涉及到 System.Drawing,System.Drawing.Drawing2D兩個(gè)命名空間所包含的部分功能在電力系統(tǒng)矢量圖中的應(yīng)用。

      圖1 命名空間結(jié)構(gòu)關(guān)系

      1.2 GDI+技術(shù)較傳統(tǒng)圖形編程技術(shù)的優(yōu)勢(shì)

      MS.NET框架類庫(kù)中封裝的 GDI+是.NET新型面向?qū)ο笳Z(yǔ)言C#、VB.NET等的圖形設(shè)計(jì)技術(shù),它提供了易于理解的、基于繼承的對(duì)象模型。與傳統(tǒng)圖形編程技術(shù)比較,GDI+技術(shù)具有以下優(yōu)點(diǎn):

      (1)GDI+包含的類能夠直接實(shí)現(xiàn)那些用GDI很難編寫的功能,并且GDI+完全集成到MS.NET Framework中,大大提高了圖形應(yīng)用程序的開發(fā)效率。

      (2)GDI+使用面向?qū)ο蟮念悓哟谓Y(jié)構(gòu)。GDI+編程包括創(chuàng)建圖形對(duì)象,設(shè)置其屬性和調(diào)用相關(guān)對(duì)象的方法,同時(shí)使用方法重載,因此在調(diào)用GDI+對(duì)象的方法時(shí),可以選擇帶有最合適參數(shù)集的方法(或重載)。

      (3)在同一操作中既有繪制圖形的輪廓,又填充其內(nèi)部區(qū)域,這兩個(gè)操作沒有本質(zhì)上的聯(lián)系。但GDI+能識(shí)別繪制圖形的輪廓和填充其內(nèi)部區(qū)域之間的區(qū)別,并為這兩個(gè)任務(wù)提供了不同的操作,從而使繪制圖形表面更靈活。

      (4)在使用其他圖形處理系統(tǒng)時(shí),會(huì)得到繪圖表面的設(shè)備信息,然后把這些設(shè)備信息作為一個(gè)參數(shù)傳遞給繪圖函數(shù)。這些設(shè)備上下文信息維護(hù)了許多狀態(tài),例如當(dāng)前的鋼筆、筆刷、點(diǎn)(在繪制線條時(shí)等使用)。GDI+則為開發(fā)人員隱藏了這種復(fù)雜性,提供了一種更為簡(jiǎn)便的方法,消除了因?yàn)殚_發(fā)人員沒有設(shè)置所有必要的狀態(tài)(因此會(huì)隨機(jī)“繼承”代碼其他部分中的狀態(tài))而引起的錯(cuò)誤。

      (5)在GDI+中提供了GraphicsPath和Region兩個(gè)重要的類,這兩個(gè)類用來處理更不規(guī)則的形狀,同時(shí)可以把一組形狀組合起來,進(jìn)行更高效的處理,使用GraphicsPath和Region類繪制復(fù)雜的路徑和形狀,但在屏幕上顯示完成的路徑或形狀這一操作,可以在一種方法調(diào)用中完成,從而簡(jiǎn)化復(fù)雜圖元的設(shè)計(jì)、繪制。

      1.3 GDI+技術(shù)圖形功能方案設(shè)計(jì)

      圖形操作功能包括圖元的繪制、點(diǎn)選、圖元的縮放、旋轉(zhuǎn)、平移等變換功能、圖元尺寸調(diào)整、打印等。

      電力系統(tǒng)繼電保護(hù)整定計(jì)算及定值管理軟件所涉及的電氣元件包括發(fā)電機(jī)、變壓器(包括雙繞組變壓器、三繞組變壓器、自耦變壓器)、斷路器、母線、線路、接地裝置等。基于MS.NET的GDI+技術(shù)不僅提供了實(shí)現(xiàn)圖元繪制的筆和筆刷的屬性(包括筆的顏色,寬度以及筆刷的顏色),而且還擁有大量的繪制圖形的方法,以及由一系列圖形組合而成的圖元的圖形路徑GraphicPath類。

      系統(tǒng)普通圖元和電氣設(shè)備圖元都可以設(shè)計(jì)由GDI+動(dòng)態(tài)創(chuàng)建繪制,內(nèi)存占用小,運(yùn)行時(shí)可由用戶動(dòng)態(tài)定制其線寬、顏色、線型等,任意調(diào)整其尺寸、任意旋轉(zhuǎn)等,對(duì)圖元進(jìn)行縮放等操作時(shí),不存在圖元變形和失真,用戶定制圖元操作簡(jiǎn)單,工作量小,是純粹的矢量圖。而現(xiàn)有的電力系統(tǒng)矢量圖形,大多在設(shè)計(jì)時(shí)或運(yùn)行時(shí)通過繪圖工具來定制設(shè)備圖元,以位圖方式存放,在圖元繪制時(shí)載入相應(yīng)的位圖圖元,內(nèi)存占用大,縮放操作時(shí)圖元存在變形和失真,用戶定制圖元操作復(fù)雜、工作量大。

      1.3.1 繪圖區(qū)域,坐標(biāo)系統(tǒng)設(shè)置

      GDI+可以提供三種繪圖表面(即窗體,打印機(jī),圖像),當(dāng)我們利用計(jì)算機(jī)進(jìn)行圖元繪制時(shí),指的是計(jì)算機(jī)顯示屏幕上的一個(gè)窗口,即窗體。窗體由客戶區(qū)域和非客戶區(qū)域組成,客戶區(qū)域就是我們可以在其中繪圖的矩形區(qū)域,繪圖區(qū)域的大小根據(jù)我們的需要,使用以下代碼屬性來設(shè)置修改繪圖區(qū)域的大小。即:

      This.ClientSize= new Size(width,height);width,height為一組整數(shù)值,表示繪圖矩形區(qū)域的寬度和高度。

      GDI+技術(shù)的坐標(biāo)系采用通用坐標(biāo)系,頁(yè)坐標(biāo)系,設(shè)備坐標(biāo)系三種。

      通用坐標(biāo)系是我們?cè)趹?yīng)用程序中引用的坐標(biāo)系,無(wú)論何時(shí)向任一繪圖函數(shù)傳遞坐標(biāo),我們都是在通用坐標(biāo)系下表示這些坐標(biāo),坐標(biāo)用浮點(diǎn)精度表示。頁(yè)坐標(biāo)系的配置決定了繪圖操作的單位,度量單位是Pixel,它的原點(diǎn)位于客戶區(qū)域的左上角。設(shè)備坐標(biāo)系基于像素坐標(biāo)——也是相對(duì)于客戶區(qū)域的左上角(或頁(yè)面可打印區(qū)域的左上角)。

      所以,當(dāng)GDI+向一個(gè)設(shè)備(如顯示器)輸出時(shí),會(huì)發(fā)生兩次坐標(biāo)轉(zhuǎn)換:一次通用變換(world transformation)(通用坐標(biāo)向頁(yè)坐標(biāo)的轉(zhuǎn)換),以及一次頁(yè)變換(頁(yè)坐標(biāo)向設(shè)備坐標(biāo)的變換)。

      應(yīng)用GDI+技術(shù)進(jìn)行圖形編程時(shí),繪圖函數(shù)使用通用坐標(biāo)系,而圖元變換是通過一次通用變換(world transformation)(通用坐標(biāo)向頁(yè)坐標(biāo)的轉(zhuǎn)換)的機(jī)制實(shí)現(xiàn)平移、縮放、旋轉(zhuǎn)等功能。

      1.3.2 應(yīng)用GDI+技術(shù)繪制圖元

      電力系統(tǒng)繼電保護(hù)電氣接線圖的各種電氣元件,可以看成是由各種圖形(如圓、直線、弧、曲線等)組合而成,如發(fā)電機(jī)圖元可以認(rèn)為是由一個(gè)圓、一段弧和一條直線(引出線部分)組成,只需要通過調(diào)用GDI+進(jìn)行圖元各組成部分的繪制設(shè)計(jì)。圖元所占用的內(nèi)存和繪圖資源,由MS.NET公共語(yǔ)言運(yùn)行時(shí)CLR中無(wú)用內(nèi)存單元垃圾回收器GC自動(dòng)管理,不存在內(nèi)存泄漏問題。

      在繪制由各種基本圖形組合而成的電氣元件時(shí),我們充分應(yīng)用GDI+提供的GraphicPath類,由GraphicPath類生成的對(duì)象表示一組子路徑或圖形。每個(gè)圖形是一條連接起來的路徑,由一系列直線段、曲線段和幾何圖形組成。這些線段和幾何圖形用GDI+中的任意標(biāo)準(zhǔn)方式來描述——圓弧、橢圓、矩形等。要?jiǎng)?chuàng)建一個(gè)圖元,只需按正確的順序繪制圖元的各個(gè)組成部分,GraphicPath對(duì)象就把圖元計(jì)算為一個(gè)把這些組成輪廓以指定的順序連接起來后所得的輪廓。以下是一個(gè)以發(fā)電機(jī)圖元為例,應(yīng)用GDI+技術(shù),用C#程序語(yǔ)言編寫的發(fā)電機(jī)圖元繪制的程序片段:

      運(yùn)行該繪圖程序后,繪制的發(fā)電機(jī)圖元如圖2所示。

      圖2 發(fā)電機(jī)圖元

      對(duì)圖元進(jìn)行平移、旋轉(zhuǎn)、縮放等操作,首先要對(duì)操作的圖元進(jìn)行點(diǎn)選,圖元的點(diǎn)選通過GDI+提供的Region類中的IsVisible方法來實(shí)現(xiàn),即判斷當(dāng)前鼠標(biāo)點(diǎn)擊的坐標(biāo)是否包含在所選擇的、經(jīng)過圖形變換處理后的圖元路徑的內(nèi)部區(qū)域中。如果圖元路徑區(qū)域含有該點(diǎn)的坐標(biāo),則表明圖元是所要選取的圖元,同時(shí)以選取框表示選中的圖元。圖3是圖2所示的發(fā)電機(jī)圖元,通過點(diǎn)選操作后旋轉(zhuǎn)90度的圖元。

      圖3 旋轉(zhuǎn)后的發(fā)電機(jī)圖元

      1.3.3 圖元變換

      矢量圖形系統(tǒng)中對(duì)各種圖元的點(diǎn)選、平移、旋轉(zhuǎn)、縮放等操作,傳統(tǒng)技術(shù)要進(jìn)行大量復(fù)雜繁瑣的坐標(biāo)變換數(shù)值計(jì)算,而利用GDI+技術(shù)提供的圖形變換方法,不需要作任何直接的坐標(biāo)變換運(yùn)算,大大簡(jiǎn)化了其運(yùn)算過程,可以得到更簡(jiǎn)捷的解決方案。

      應(yīng)用GDI+技術(shù)實(shí)現(xiàn)圖元變換,實(shí)際操作的是一個(gè)Matrix對(duì)象,該對(duì)象由方法建立,Matrix對(duì)象定義了所謂的仿射變換(保持共線性變換,意味著平行線在變換之后總是保持平行)。因此,在執(zhí)行圖元的簡(jiǎn)單變換或是復(fù)雜變換,都是仿射變換。在一個(gè)繪圖區(qū)域中應(yīng)用GDI+技術(shù)進(jìn)行圖元變換時(shí),它會(huì)應(yīng)用于后繼的所有繪圖操作,每次執(zhí)行繪圖操作時(shí),GDI+都通過應(yīng)用當(dāng)前的變換來改變繪圖操作的結(jié)果。

      圖元變換時(shí)采用的Matrix表示如下:

      實(shí)現(xiàn)圖元變換功能的各種方法如下:

      (1)ScaleTransform在通用變換中應(yīng)用一次縮放;

      (2)TranslateTransform在通用變換中應(yīng)用一次平移(水平或垂直移動(dòng));

      (3)RotateTtransform按指定的度數(shù)在通用變換中圍繞點(diǎn)(0,0)執(zhí)行一次旋轉(zhuǎn);

      (4)MultiplyTransform在通用變換中追加一次變換Matrix對(duì)象。即現(xiàn)有一個(gè)變換,我們使用MultiplyTransform方法,在現(xiàn)有變換中追加指定的變換。

      2 圖元數(shù)據(jù)庫(kù)交互設(shè)計(jì)

      圖形是數(shù)據(jù)的一種形象的表現(xiàn)形式,它的特點(diǎn)是形象和直觀。數(shù)據(jù)庫(kù)是數(shù)據(jù)存儲(chǔ)、處理和管理的工具。任何一個(gè)系統(tǒng)的建立,其實(shí)質(zhì)都是數(shù)據(jù)庫(kù)的數(shù)據(jù)建立。

      圖元數(shù)據(jù)庫(kù)交互設(shè)計(jì)的關(guān)鍵是面向設(shè)備的建模方式的實(shí)現(xiàn),就是把設(shè)備圖元對(duì)象與數(shù)據(jù)庫(kù)記錄一一對(duì)應(yīng),在定義一個(gè)設(shè)備圖元對(duì)象的同時(shí)自動(dòng)追加一條數(shù)據(jù)庫(kù)記錄;同時(shí)設(shè)備圖元的模型參數(shù)集合及其錄入界面根據(jù)數(shù)據(jù)庫(kù)記錄的結(jié)構(gòu)自動(dòng)修正。利用設(shè)備對(duì)象圖元生成數(shù)據(jù)庫(kù)記錄是圖元數(shù)據(jù)庫(kù)的基礎(chǔ)。當(dāng)數(shù)據(jù)庫(kù)記錄的字段改變時(shí),設(shè)備圖元的模型參數(shù)和錄入界面必須做出相應(yīng)的修正,才能做到圖形數(shù)據(jù)庫(kù)的交互。

      圖元數(shù)據(jù)庫(kù)通過 MS.NET的最新技術(shù) ADO.NET進(jìn)行訪問。ADO.NET徹底地支持像Web這樣的分布式體系結(jié)構(gòu),并利用XML在分布式組件中傳送數(shù)據(jù)。而且ADO.NET將各種邏輯條件進(jìn)行組合來處理離散的記錄集合,這些集合中包含了任意數(shù)據(jù)類型,即使和數(shù)據(jù)庫(kù)失去聯(lián)系,設(shè)備照樣可以工作。當(dāng)斷開時(shí),用戶可以利用結(jié)果集進(jìn)行工作,ADO.NET將所做的變化都隱藏起來,只有當(dāng)需要對(duì)本地?cái)?shù)據(jù)所做的修改發(fā)回?cái)?shù)據(jù)庫(kù)時(shí),連接才有必要。連接只是暫時(shí)地利用該連接單向地發(fā)送對(duì)本地?cái)?shù)據(jù)所做的添加、更新和刪除等操作。

      3 結(jié)束語(yǔ)

      本文結(jié)合在電力系統(tǒng)繼電保護(hù)綜合計(jì)算及信息管理系統(tǒng)項(xiàng)目開發(fā)過程中的體會(huì),介紹了GDI+技術(shù)在基于MS.NET的電力系統(tǒng)矢量圖形系統(tǒng)中的具體應(yīng)用。實(shí)際應(yīng)用表明,所采用的技術(shù)手段較之傳統(tǒng)方法簡(jiǎn)便靈活、設(shè)計(jì)簡(jiǎn)單、開發(fā)工作量小、效率高,程序代碼更易于維護(hù)、復(fù)用率高,不需要進(jìn)行大量的坐標(biāo)變換數(shù)值計(jì)算,運(yùn)行速度也較快。GDI+在電力系統(tǒng)圖形設(shè)計(jì)應(yīng)用中具有較好的實(shí)用價(jià)值,有廣泛的應(yīng)用前景。

      [1] 劉偉,許珉,楊宛輝.面向?qū)ο蟮碾娏ο到y(tǒng)圖形程序設(shè)計(jì)方法[J].繼電器,2003,(11).

      [2] 吳文傳,張伯明,湯磊,等.支持SCADA/PAS/DTS一體化的圖形系統(tǒng)[J].電力系統(tǒng)自動(dòng)化,2001,(5).

      [3] 劉秀玲,陳超英.配電網(wǎng)地理信息系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)與圖形繪制[J].電力系統(tǒng)自動(dòng)化,2001,(10).

      [4] 陳躍輝,陳金富,段獻(xiàn)忠.圖形化的電力系統(tǒng)規(guī)劃自動(dòng)化研究[J].電力系統(tǒng)自動(dòng)化,2002,(2).

      [5] Eric White.GDI+程序設(shè)計(jì)[M].楊浩,張哲峰,譯.北京:清華大學(xué)出版社,2002.

      [6] Jesse Liberty.C#程序設(shè)計(jì)[M]劉基誠(chéng),譯.北京:中國(guó)電力出版社,2002.

      [7] 張超,陳允平.圖形程序設(shè)計(jì)在繼電保護(hù)計(jì)算輔助整定計(jì)算軟件開發(fā)中的應(yīng)用[J].繼電器,2002,(2).

      猜你喜歡
      圖元繪圖繪制
      Art on coffee cups
      來自河流的你
      “禾下乘涼圖”繪圖人
      一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運(yùn)用
      學(xué)術(shù)出版物插圖的編排要求(一):圖注
      聯(lián)鎖表自動(dòng)生成軟件的設(shè)計(jì)與實(shí)現(xiàn)
      放學(xué)后
      童話世界(2018年17期)2018-07-30 01:52:02
      基于HTML5 Canvas繪圖技術(shù)應(yīng)用
      基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實(shí)現(xiàn)
      軟件(2016年12期)2016-02-13 05:58:14
      Surfer和ArcView結(jié)合在氣象繪圖中的應(yīng)用
      河北遙感(2015年2期)2015-07-18 11:11:14
      建昌县| 邯郸市| 无极县| 泸定县| 南乐县| 象州县| 庆云县| 阜宁县| 隆林| 日喀则市| 泰州市| 古丈县| 双峰县| 安新县| 安顺市| 比如县| 吉林省| 惠来县| 枝江市| 宜君县| 普陀区| 洛南县| 新昌县| 宁武县| 子长县| 三亚市| 鄂托克前旗| 龙山县| 腾冲县| 通江县| 江陵县| 湖州市| 宜州市| 西充县| 磐安县| 措勤县| 静乐县| 荆州市| 思南县| 视频| 西盟|