基于WPF的交互式繪圖系統的開(kāi)發(fā)
Canvas 是頂級布局控件,Canvas面板類(lèi)似傳統的圖形環(huán)境,利用坐標位置指定對象的擺放地點(diǎn)。Canvas的左上角為原點(diǎn),X坐標向右,Y坐標向下。而一般的圖形系統的坐標原點(diǎn)設定在繪圖區的左下角,X坐標水平向右,Y坐標豎直向上,因此可利用WPF的Transform類(lèi),通過(guò)設定Canvas的RenderTransform來(lái)實(shí)現[3]。為了使圖元大小根據窗口的大小進(jìn)行縮放,可以將Canvas放在Viewbox內。以下是實(shí)現坐標變換的XAML片段:
Viewbox>
Canvas RenderTransformOrigin=0.5,0.5>
Canvas.RenderTransform>
TransformGroup >
ScaleTransform ScaleY=-1 />
/TransformGroup>
/Canvas.RenderTransform>
/Canvas>
/Viewbox>
圖形元素的編輯與修改功能主要依靠計算機圖形學(xué)的基本原理以及Windows表現層基礎類(lèi)庫(WPF)來(lái)實(shí)現。WPF的System.Printing命名空間下的PrintDialog類(lèi)主要用來(lái)實(shí)現打印單頁(yè)或多頁(yè)文件的功能,PrintDialog類(lèi)顯示一個(gè)打印對話(huà)框,與用戶(hù)交互操作來(lái)完成打印功能。
2.2.3 曲線(xiàn)曲面造型功能
曲線(xiàn)曲面造型[4]是計算機輔助幾何設計(CAGD)的核心,也是計算機圖形學(xué)的一項重要內容。三次B樣條曲線(xiàn)是曲線(xiàn)學(xué)中一個(gè)重要部分,它不但保留了Bezier曲線(xiàn)的優(yōu)點(diǎn),而且克服了其不具備局部性質(zhì)的缺點(diǎn),能更好地表示與設計自由型曲線(xiàn)曲面,通過(guò)幾個(gè)控制點(diǎn)的移動(dòng)能形成不同的曲線(xiàn)。系統提供了繪制B樣條曲線(xiàn)與閉合B樣條曲線(xiàn)的功能。繪制圖形如圖5所示。
動(dòng)態(tài)生成B樣條曲線(xiàn)的實(shí)現步驟如下:
(1)設定一個(gè)點(diǎn)集合ListPoint> mousepts保存鼠標左鍵所按下的序列點(diǎn);
(2)在鼠標移動(dòng)過(guò)程中把鼠標的當前位置作為B樣條曲線(xiàn)的臨時(shí)終點(diǎn),加入點(diǎn)集合mousepts;
(3)由點(diǎn)集合mousepts中的這些序列點(diǎn)反求B樣條曲線(xiàn)的控制頂點(diǎn)[5];
(4)利用求出的B樣條曲線(xiàn)的控制頂點(diǎn)得到B樣條曲線(xiàn)上的序列離散點(diǎn);
(5)將序列離散點(diǎn)依次加入多段線(xiàn)Polyline的Points集合,從而生成B樣條曲線(xiàn)。
3 圖形數據文件的存儲與讀取
系統圖形數據文件的輸出包含JPG和DXF兩種格式。由于A(yíng)utoCAD在全世界應用非常廣泛,它的數據文件格式DXF已經(jīng)成為事實(shí)上的一種標準,因此系統提供了自定義的圖形數據文件格式與DXF格式相互轉換的功能。DXF 文件本質(zhì)上由代碼及關(guān)聯(lián)值對組成。代碼(通常稱(chēng)為組碼)表明其后的值的類(lèi)型。使用這些組碼和值對,可以將 DXF 文件組織到由記錄組成的區域中,這些記錄由組碼和數據項目組成。在 DXF 文件中,每個(gè)組碼和值都各占一行。DXF文件完整的結構[6]如圖6所示。
程序中設計了兩個(gè)基類(lèi)ReadDXF和WriteDXF來(lái)分別讀取和寫(xiě)入DXF文件。ReadDXF讀取 DXF 文件,并且從給定段的給定對象中提取特定代碼和值。與讀取 DXF 文件相比,寫(xiě)入DXF文件更困難一些,因為必須保持圖形的一致性,這樣 AutoCAD 才能找到可接受的文件。AutoCAD 允許省略 DXF 文件中的很多項目,仍然能夠獲得可用的圖形,但文件結尾處必須存在 EOF 項目。為了簡(jiǎn)便,WriteDXF省略了整個(gè)HEADER段、TABLES 段和BLOCKS 段,只包含 ENTITIES 段。
隨著(zhù)計算機系統、圖形輸入、圖形輸出設備的發(fā)展,計算機圖形軟件系統也有了很大的發(fā)展[7]。本文詳細介紹了基于WPF的交互式繪圖系統的功能與設計,并探討了系統實(shí)現過(guò)程中的若干關(guān)鍵技術(shù)。該系統實(shí)現了其他圖形軟件具有的基本操作,并提供了自定義的圖形數據文件格式與DXF格式相互轉換的功能,操作方便,靈活,具有可擴展性,經(jīng)過(guò)改進(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程序設計指南[M].蔡學(xué)鏞,譯. 北京:電子工業(yè)出版社, 2008:844-845.
[4] 朱永強,魯聰達. 自由曲線(xiàn)曲面造型技術(shù)的綜述[J].中國制造業(yè)信息化,2003,32(5):110-113.
[5] 孫家廣,楊長(cháng)貴.計算機圖形學(xué)[M]. 北京:清華大學(xué)出版社, 1995.
[6] 譚超,張群會(huì ).基于AutoCAD 的DXF格式文件讀寫(xiě)方法研究[J].計算機與網(wǎng)絡(luò ),2009,35(21):46-49.
[7] 曾慶云. 計算機繪圖技術(shù)的發(fā)展趨勢[J]. 機械研究與應用,1996(4):37-38.
評論