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

        ?

        基于WPF的交互式繪圖系統(tǒng)的開發(fā)

        2011-05-17 09:08:42李成剛
        關(guān)鍵詞:功能系統(tǒng)

        李成剛,馮 靜,凌 玲

        (華中科技大學(xué) 機(jī)械科學(xué)與工程學(xué)院,湖北 武漢430074)

        交互式繪圖系統(tǒng)是指能為用戶提供交互式操作支持,使用戶通過鼠標(biāo)、鍵盤和手寫筆等在圖形終端上輸入數(shù)據(jù)和圖形信息,進(jìn)行繪圖,并對生成的圖形進(jìn)行修改、編輯等操作,設(shè)計(jì)完成后,保存設(shè)計(jì)結(jié)果,最終在顯示屏或其他外部設(shè)備上進(jìn)行圖形輸出的一整套設(shè)計(jì)及其應(yīng)用軟件,在CAD、辦公自動化和其他領(lǐng)域得到了非常廣泛的應(yīng)用?,F(xiàn)有繪圖軟件繪制復(fù)雜圖形時(shí)會占用大量CPU,消耗大量內(nèi)存,從而導(dǎo)致界面失去響應(yīng)。WPF是一個(gè)新的編程模型,與傳統(tǒng)GDI/GDI+繪圖模型相比,WPF將CPU和GPU分開來利用,由于GPU的浮點(diǎn)計(jì)算能力遠(yuǎn)高于CPU,從而保證了大量計(jì)算的優(yōu)先性,同時(shí)也能最小化CPU使用率。WPF以DirectX作為核心繪圖函數(shù),DirectX繪圖速度高于GDI/GDI+,能產(chǎn)生更好的視覺效果。對于需要大量浮點(diǎn)運(yùn)算的圖形圖像來說,WPF是一個(gè)很好的選擇。本文介紹了在VS2008環(huán)境下,以WPF為平臺,用C#編寫開發(fā)的一個(gè)交互式圖形系統(tǒng)。

        1 交互式繪圖系統(tǒng)的設(shè)計(jì)

        1.1 系統(tǒng)的功能設(shè)計(jì)

        基于WPF的交互式繪圖系統(tǒng)主要由輸入單元、基本繪圖單元、圖元編輯單元、圖元修改單元、屬性設(shè)置單元、輸出單元組成。系統(tǒng)模塊結(jié)構(gòu)圖如圖1所示。

        本系統(tǒng)實(shí)現(xiàn)了以下功能:

        圖1 系統(tǒng)模塊結(jié)構(gòu)圖

        (1)基本圖形元素(點(diǎn)、直線、折線、圓形、圓弧、橢圓、矩形、多邊形、B樣條、閉合B樣條)以及文本的動態(tài)繪制與生成功能;

        (2)編輯修改功能:對象的拾取、刪除、復(fù)制、鏡像、陣列、移動、旋轉(zhuǎn)、填充、裁剪,平移縮放視圖,測量封閉區(qū)域的面積;

        (3)屬性的設(shè)置:包括對圖元的圖層、線型、線寬、顏色;系統(tǒng)的背景色,文字的高度等屬性進(jìn)行設(shè)置;

        (4)圖形數(shù)據(jù)文件的讀取、保存、打印等操作。

        1.2 開發(fā)平臺的選擇

        目前Windows環(huán)境下的圖形程序接口主要有GDI/GDI+、Direct3D、OpenGL、WPF 四種。 GDI/GDI+通常是一個(gè)靜態(tài)的顯示系統(tǒng),只有有限的動畫支持,此外GDI/GDI+只支持二維圖形開發(fā)。OpenGL是一個(gè)開放的三維圖形軟件包,由于它是圖形的底層圖形庫,沒有提供幾何實(shí)體圖元,不能直接用以描述場景。Direct3D以COM接口形式提供,所以較為復(fù)雜,穩(wěn)定性差。WPF是微軟新一代圖形系統(tǒng),運(yùn)行在.NET Framework 3.0架構(gòu)下。WPF的核心是一個(gè)與分辨率無關(guān)并且基于向量的呈現(xiàn)引擎,旨在利用現(xiàn)代圖形硬件的優(yōu)勢來最小化 CPU使用率。在WPF中,底層的圖形技術(shù)不再是GDI/GDI+,而是DirectX。

        WPF在圖形與界面開發(fā)方面,主要有以下幾個(gè)優(yōu)勢[1]:

        (1)豐富的繪圖模型與文本模型。不同于以往的逐個(gè)像素的繪制,在WPF中可以直接處理基本形狀、文本框以及其他UI元素。

        (2)獨(dú)立的圖形解析。WPF圖形系統(tǒng)的基本度量單位是與設(shè)備無關(guān)的像素,它等于1英寸的 1/96。不管實(shí)際的屏幕分辨率是多少,每個(gè)與設(shè)備無關(guān)的像素都會自動縮放,以符合呈現(xiàn)該像素的系統(tǒng)上的每英寸點(diǎn)數(shù)(dpi)設(shè)置。

        2 交互式繪圖系統(tǒng)的實(shí)現(xiàn)

        2.1 系統(tǒng)的功能界面

        交互式繪圖系統(tǒng)的界面窗口主要由標(biāo)題欄、菜單欄、工具欄、繪圖區(qū)、工具箱、消息框和狀態(tài)欄組成,如圖2所示。

        2.2 系統(tǒng)的功能實(shí)現(xiàn)

        2.2.1 系統(tǒng)的窗口框架

        WPF包含兩個(gè)相互關(guān)聯(lián)的編程接口,通常使用可擴(kuò)展應(yīng)用程序標(biāo)記語言 (XAML)標(biāo)記實(shí)現(xiàn)應(yīng)用程序的外觀,而使用托管編程語言(代碼隱藏)實(shí)現(xiàn)其行為。WPF中的 Menu控件、ToolBar控件、StatusBar控件、GroupBox控件、TextBox控件以及Canvas面板[2]分別構(gòu)成了應(yīng)用程序主窗口頂端的菜單欄、工具欄、底端的狀態(tài)欄與客戶區(qū)左邊的工具箱、下方的消息框以及繪圖區(qū)。系統(tǒng)使用鼠標(biāo)和鍵盤輸入來繪制圖形,Canvas面板是用于創(chuàng)建復(fù)雜繪圖的特別理想的選擇,因?yàn)樗С謱ζ渥訉ο蟮慕^對定位??蚣艽翱诘倪壿嫎浜唸D如圖3所示。

        圖3 框架窗口的邏輯樹

        2.2.2 圖形的繪制與編輯功能

        WPF提供了Shapes庫來顯示矢量圖,WPF中的基本圖形類主要位于System.Windows.Shapes命名空間。Shape類是所有圖形類的基類,它定義了Stroke、StrokeThickness、Fill等通用屬性,用來繪制形狀輪廓的顏色、粗細(xì)以及形狀的內(nèi)部填充。具體的圖形元素類(Line、Path、Polygon、Polyline、Ellipse、Rectangle)都由其派生而來。2D相關(guān)類型的層次結(jié)構(gòu)圖如圖4所示。

        圖4 2D圖形類的層次結(jié)構(gòu)

        Canvas是頂級布局控件,Canvas面板類似傳統(tǒng)的圖形環(huán)境,利用坐標(biāo)位置指定對象的擺放地點(diǎn)。Canvas的左上角為原點(diǎn),X坐標(biāo)向右,Y坐標(biāo)向下。而一般的圖形系統(tǒng)的坐標(biāo)原點(diǎn)設(shè)定在繪圖區(qū)的左下角,X坐標(biāo)水平向右,Y坐標(biāo)豎直向上,因此可利用WPF的Transform類,通過設(shè)定Canvas的RenderTransform來實(shí)現(xiàn)[3]。為了使圖元大小根據(jù)窗口的大小進(jìn)行縮放,可以將Canvas放在Viewbox內(nèi)。以下是實(shí)現(xiàn)坐標(biāo)變換的XAML片段:

        圖形元素的編輯與修改功能主要依靠計(jì)算機(jī)圖形學(xué)的基本原理以及Windows表現(xiàn)層基礎(chǔ)類庫(WPF)來實(shí)現(xiàn)。WPF的System.Printing命名空間下的PrintDialog類主要用來實(shí)現(xiàn)打印單頁或多頁文件的功能,PrintDialog類顯示一個(gè)打印對話框,與用戶交互操作來完成打印功能。

        2.2.3 曲線曲面造型功能

        曲線曲面造型[4]是計(jì)算機(jī)輔助幾何設(shè)計(jì)(CAGD)的核心,也是計(jì)算機(jī)圖形學(xué)的一項(xiàng)重要內(nèi)容。三次B樣條曲線是曲線學(xué)中一個(gè)重要部分,它不但保留了Bezier曲線的優(yōu)點(diǎn),而且克服了其不具備局部性質(zhì)的缺點(diǎn),能更好地表示與設(shè)計(jì)自由型曲線曲面,通過幾個(gè)控制點(diǎn)的移動能形成不同的曲線。系統(tǒng)提供了繪制B樣條曲線與閉合B樣條曲線的功能。繪制圖形如圖5所示。

        動態(tài)生成B樣條曲線的實(shí)現(xiàn)步驟如下:

        (1)設(shè)定一個(gè)點(diǎn)集合 List<Point>mousepts保存鼠標(biāo)左鍵所按下的序列點(diǎn);

        (2)在鼠標(biāo)移動過程中把鼠標(biāo)的當(dāng)前位置作為B樣條曲線的臨時(shí)終點(diǎn),加入點(diǎn)集合mousepts;

        (3)由點(diǎn)集合mousepts中的這些序列點(diǎn)反求B樣條曲線的控制頂點(diǎn)[5];

        (4)利用求出的B樣條曲線的控制頂點(diǎn)得到B樣條曲線上的序列離散點(diǎn);

        (5)將序列離散點(diǎn)依次加入多段線Polyline的Points集合,從而生成B樣條曲線。

        3 圖形數(shù)據(jù)文件的存儲與讀取

        系統(tǒng)圖形數(shù)據(jù)文件的輸出包含JPG和DXF兩種格式。由于AutoCAD在全世界應(yīng)用非常廣泛,它的數(shù)據(jù)文件格式DXF已經(jīng)成為事實(shí)上的一種標(biāo)準(zhǔn),因此系統(tǒng)提供了自定義的圖形數(shù)據(jù)文件格式與DXF格式相互轉(zhuǎn)換的功能。DXF文件本質(zhì)上由代碼及關(guān)聯(lián)值對組成。代碼(通常稱為組碼)表明其后的值的類型。使用這些組碼和值對,可以將 DXF文件組織到由記錄組成的區(qū)域中,這些記錄由組碼和數(shù)據(jù)項(xiàng)目組成。在 DXF文件中,每個(gè)組碼和值都各占一行。DXF文件完整的結(jié)構(gòu)[6]如圖6所示。

        程序中設(shè)計(jì)了兩個(gè)基類ReadDXF和WriteDXF來分別讀取和寫入DXF文件。ReadDXF讀取 DXF文件,并且從給定段的給定對象中提取特定代碼和值。與讀取DXF文件相比,寫入DXF文件更困難一些,因?yàn)楸仨毐3謭D形的一致性,這樣 AutoCAD才能找到可接受的文件。AutoCAD允許省略 DXF文件中的很多項(xiàng)目,仍然能夠獲得可用的圖形,但文件結(jié)尾處必須存在 EOF項(xiàng)目。為了簡便,WriteDXF省略了整個(gè) HEADER段、TABLES段和BLOCKS段,只包含 ENTITIES段。

        圖6 DXF文件的完整層次結(jié)構(gòu)

        隨著計(jì)算機(jī)系統(tǒng)、圖形輸入、圖形輸出設(shè)備的發(fā)展,計(jì)算機(jī)圖形軟件系統(tǒng)也有了很大的發(fā)展[7]。本文詳細(xì)介紹了基于WPF的交互式繪圖系統(tǒng)的功能與設(shè)計(jì),并探討了系統(tǒng)實(shí)現(xiàn)過程中的若干關(guān)鍵技術(shù)。該系統(tǒng)實(shí)現(xiàn)了其他圖形軟件具有的基本操作,并提供了自定義的圖形數(shù)據(jù)文件格式與DXF格式相互轉(zhuǎn)換的功能,操作方便,靈活,具有可擴(kuò)展性,經(jīng)過改進(jìn)還可以成為適用于其它行業(yè)的通用的圖形工具軟件。

        [1]MACDONALD M.Pro WPF in C#2008:Windows Presentation Foundation with.NET 3.5[M].New York:Apress,2008.

        [2]NATHAN A.WPF揭秘[M].瞿杰,譯.北京:人民郵電出版社,2008:109-111.

        [3]PETZOLD C.Windows Presentation Foundation程序設(shè)計(jì)指南[M].蔡學(xué)鏞,譯.北京:電子工業(yè)出版社,2008:844-845.

        [4]朱永強(qiáng),魯聰達(dá).自由曲線曲面造型技術(shù)的綜述[J].中國制造業(yè)信息化,2003,32(5):110-113.

        [5]孫家廣,楊長貴.計(jì)算機(jī)圖形學(xué)[M].北京:清華大學(xué)出版社,1995.

        [6]譚超,張群會.基于AutoCAD的DXF格式文件讀寫方法研究[J].計(jì)算機(jī)與網(wǎng)絡(luò),2009,35(21):46-49.

        [7]曾慶云.計(jì)算機(jī)繪圖技術(shù)的發(fā)展趨勢[J].機(jī)械研究與應(yīng)用,1996(4):37-38.

        猜你喜歡
        功能系統(tǒng)
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        懷孕了,凝血功能怎么變?
        媽媽寶寶(2017年2期)2017-02-21 01:21:24
        “簡直”和“幾乎”的表達(dá)功能
        国产精品爽爽ⅴa在线观看| 一区二区三区免费观看在线视频| 国产福利一区二区三区在线观看| 欧美高清视频手机在在线| 亚洲av无码一区二区三区人妖| 国产香蕉尹人综合在线观| av天堂一区二区三区精品| 日本一区二区在线免费视频 | 国产午夜精品一区二区三区软件 | a级毛片100部免费观看| 欧美日韩国产免费一区二区三区欧美日韩| 日本av在线精品视频| 日本高清一区二区三区在线观看| 粗大的内捧猛烈进出视频| 国产精品亚洲欧美天海翼| 国产一区二区av男人| 日本一区二区三区视频在线观看 | 精品露脸国产偷人在视频| 精品国产一区二区三区三| 国产又黄又爽又色的免费| 永久国产盗摄一区二区色欲 | 日本最新视频一区二区| 国产午夜伦鲁鲁| 欧美成人小视频| 男女啪啪免费视频网址| 欧美熟妇另类久久久久久多毛| 全球av集中精品导航福利| 亚洲国产欧美久久香综合| 免费在线国产不卡视频| 亚洲精品一品区二品区三品区| 看黄网站在线| 精品女同av一区二区三区| 一边摸一边抽搐一进一出视频| 黄色视频在线免费观看| 亚洲a∨好看av高清在线观看| 中文字幕一二三四五六七区| 亚洲看片lutube在线观看| 久久久AV无码精品免费| 草青青在线视频免费观看| 山外人精品影院| 狠狠躁夜夜躁人人爽天天 |