【正文】
繪制正六邊形的效果圖如下: 圖 繪制正六邊形的效果圖 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 22 繪制正六邊形的流程圖如下: 開(kāi) 始鼠 標(biāo) 左 鍵 點(diǎn) 擊 繪 圖 區(qū) 域 , 獲 取 其 坐 標(biāo) 點(diǎn) 作 為 P o i n t 1調(diào) 用 g . D r a w P o l y g o n ( P e n , C u r v e P o i n t s ) 函 數(shù) 將 正 六 邊 形 繪 出結(jié) 束生 成 G r a p h i c 對(duì) 象 g依 據(jù) P o i n t 1 通 過(guò) 算 法 計(jì) 算 出 P o i n t 2 、 P o i n t 3 、 P o i n t 4 、 P o i n t 5 、 P o i n t 6 的 坐 標(biāo)將 P o i n t 1 、 P o i n t 2 、 P o i n t 3 、 P o i n t 4 、 P o i n t 5 、 P o i n t 6 存 入 C u r v e P o i n t s 數(shù) 組鼠 標(biāo) 左 鍵 是 否 按 下否是 圖 繪制正六邊形的流程圖 點(diǎn)軌跡曲線( Polygon)的繪制 點(diǎn)軌跡曲線的繪制需要在繪圖區(qū)域捕獲一連串的坐標(biāo)點(diǎn),然后將這一連串的坐標(biāo)點(diǎn)存入所設(shè)置的 PointList 點(diǎn)數(shù)組。獲取參數(shù)后生成 提供的Graphics 對(duì)象 g,然后將 PointList 數(shù)組中的點(diǎn)按順序依次取出,使每?jī)蓚€(gè)相鄰的點(diǎn)作為參數(shù),調(diào)用 (Pen, PointList [i].x, PointList [i].y, PointList [i1].x, PointList [i1].y)函數(shù)將點(diǎn)軌跡曲線繪出。由于每?jī)蓚€(gè)點(diǎn)之間的距離比較微小,所以呈現(xiàn)出來(lái)的形式類(lèi)似于點(diǎn)軌跡。 繪制點(diǎn)軌跡曲線的效果圖如下: 圖 繪制點(diǎn)軌跡曲線的效果圖 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 23 繪制點(diǎn)軌跡曲線的流程圖如下: 開(kāi) 始鼠 標(biāo) 左 鍵 點(diǎn) 擊 繪 圖 區(qū) 域 , 鼠 標(biāo) 停 留 于 原 點(diǎn) 或 移 動(dòng) 并獲 取 其 坐 標(biāo) 點(diǎn) 作 為 參 數(shù) 存 入 P o i n t L i s t 數(shù) 組 以 P o i n t L i s t 中 每 兩 個(gè) 相 鄰 的 元 素 為 參 數(shù) , 調(diào) 用g . D r a w L i n e ( P e n , P o i n t L i s t [ i ] . x , P o i n t L i s t [ i ] . y , P o i n t L i s t [ i 1 ] . x , P o i n t L i s t [ i 1 ] . y ) 函 數(shù) 將 點(diǎn) 軌 跡 曲 線 繪 出結(jié) 束生 成 G r a p h i c 對(duì) 象 g鼠 標(biāo) 左 鍵 是 否 按 下是否 圖 繪制點(diǎn)軌跡曲線的流程圖 5. 2 草圖編輯功能的實(shí)現(xiàn) 草圖的編輯功能主要是改變草圖的線條寬度、線條樣式、線條顏色、形狀和大小以及動(dòng)態(tài)拖動(dòng)草圖。 改變線條寬度 系統(tǒng)所設(shè)置的畫(huà)筆線條寬度分為五種,寬度依次變大,通過(guò)改變 PenWidth 而實(shí)現(xiàn)具體的線條粗細(xì)的改變,下面以正三角形為例展示: 圖 1px 寬度 圖 5px 寬度 改變線條樣式 系統(tǒng)所設(shè)置的畫(huà)筆線條樣式分為兩種,分別為 實(shí)線、虛線,通過(guò)改變 PenStyle而實(shí)現(xiàn)具體的線條樣式的改變,下面以橢圓為例展示: 圖 實(shí)線條 圖 虛線條 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 24 改變線條顏色 系統(tǒng)所設(shè)置的畫(huà)筆線條顏色為 Windows 操作系統(tǒng)所提供,通過(guò)改變 PenColor 而實(shí)現(xiàn)具體的線條顏色的改變。 改變草圖的形狀與大小 為了能改變草圖的形狀和大小,系統(tǒng)為每種類(lèi)型的草圖都設(shè)置了鎖定紅框,鎖定紅框的作用就是紅框勾勒出圖形的大致輪廓,并以小紅點(diǎn)的形式標(biāo)記出可以改變 圖形形狀和大小的特殊點(diǎn),當(dāng)鼠標(biāo)左鍵單擊已繪制的草圖時(shí)鎖定紅框隨即出現(xiàn),當(dāng)鼠標(biāo)移動(dòng)到特殊點(diǎn)時(shí)光標(biāo)形狀會(huì)發(fā)生變化,此時(shí)按下左鍵通過(guò)改變光標(biāo)位置即可實(shí)現(xiàn)草圖的形狀大小的改變,下圖為各個(gè)類(lèi)型草圖的鎖定紅框: 圖 各個(gè)類(lèi)型草圖的鎖定紅框 填充閉合草圖 系統(tǒng)提供三種不同的方式填充閉合草圖,分別為有邊框白色填充、有邊框顏色填充、無(wú)邊框顏色填充。系統(tǒng)所設(shè)置的畫(huà)刷顏色為 Windows 操作系統(tǒng)所提供,通過(guò)改變 BrushColor 而實(shí)現(xiàn)具體的填充顏色的改變,以扇形為例展示如下: 圖 黑色邊框白色填充扇形 圖 黑色邊框黃色填充扇形 動(dòng)態(tài)拖動(dòng)草圖 動(dòng)態(tài)拖動(dòng)草圖就是要改變草圖在畫(huà)板上的位置,此功能的實(shí)現(xiàn)是將所選定的草圖的特征坐標(biāo)點(diǎn)的 X 坐標(biāo)值和 Y 坐標(biāo)值同時(shí)加或減相同的數(shù)值 Delta,而 Delta 則為鼠標(biāo)拖動(dòng)時(shí)移動(dòng)的距離,然后草圖在繪圖域動(dòng)態(tài)重繪,所以草圖會(huì)跟隨鼠標(biāo)移動(dòng)而移動(dòng)。 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 25 5. 3 草圖復(fù)制粘貼功能的實(shí)現(xiàn) 草圖繪制系統(tǒng)所實(shí)現(xiàn)的復(fù)制粘貼功能涉及系統(tǒng)所具備的各種草圖類(lèi)型,復(fù)制粘貼功能既可以在單獨(dú)的繪圖系統(tǒng)中使用,也可以完成在同時(shí)開(kāi)啟的兩個(gè)不 同的繪圖系統(tǒng)間的草圖的復(fù)制與粘貼。該功能的實(shí)現(xiàn)主要借助于 C所提供的剪切板機(jī)制( Clipboard),在選定要復(fù)制的草圖之后點(diǎn)擊復(fù)制按鈕既可以將所有被選中圖形的特征屬性依次抽取出來(lái)并存入剪切板,當(dāng)點(diǎn)擊粘貼按鈕后系統(tǒng)會(huì)將剪切板中的圖形特征屬性依次讀取并加載到系統(tǒng),進(jìn)而繪制在新開(kāi)辟的畫(huà)板上。 系統(tǒng)存儲(chǔ)圖形特征屬性的類(lèi)的結(jié)構(gòu)如下表: 表 存儲(chǔ)圖形特征屬性的類(lèi)的結(jié)構(gòu)表 變量名 所存儲(chǔ)的圖形特征屬性 public DrawObjectType Type = new DrawObjectType()。 圖形所 屬類(lèi)型 public int PenWidth = 0。 畫(huà)筆寬度 public PenStyle PenStyle = 。 畫(huà)筆樣式 默認(rèn)為實(shí)線 public FillStyle FillStyle = 。 閉合圖形填充方式 默認(rèn)為有邊框白色填充 public Color PenColor = new Color()。 畫(huà)筆顏色 public Color BrushColor = new Color()。 畫(huà)刷顏色 填充閉合圖形時(shí)用 public Point StartPoint = new Point()。 起始點(diǎn) public Point EndPoint = new Point()。 終止點(diǎn) public Point ControlPoint1 = new Point()。 控制點(diǎn) 1 public Point ControlPoint2 = new Point()。 控制點(diǎn) 2 public float StartAngel = 0。 起始角度 public float SweepAngel = 0。 掃過(guò)角度 public ListPoint PointList = new ListPoint()。 坐標(biāo)點(diǎn)數(shù)組 復(fù)制粘貼功能的流程圖如下: 點(diǎn) 擊 復(fù) 制 按 鈕將 所 有 被 選 中 圖 形 的 特 征 屬 性 依 次 抽 取 出 來(lái) 并 存 入剪 切 板系 統(tǒng) 開(kāi) 辟 新 的 畫(huà) 板 , 將 所 有 圖 形 繪 制 在 新 畫(huà) 板 上結(jié) 束點(diǎn) 擊 粘 貼 按 鈕將 剪 切 板 中 的 圖 形 特 征 屬 性 依 次 讀 取 并 加 載 到 系 統(tǒng)開(kāi) 始 圖 復(fù)制粘貼功能流程圖 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 26 下表為具體的每類(lèi)草圖在復(fù)制時(shí)需要提取的特征屬性: 表 每類(lèi)草圖要被提取的特征信息表 圖形屬性 起始點(diǎn) 終止點(diǎn) 控制點(diǎn)1 控制點(diǎn)2 所屬矩形 畫(huà)筆顏色 畫(huà)筆寬度 畫(huà)筆樣式 填充方式 畫(huà)刷顏色 開(kāi)始角度 掃 過(guò) 角 度 點(diǎn) 數(shù) 組 Line Arc MultiLines BezierCurve PieSlice Polygon Rectangle Ellipse Cricle Triangle Square Pentagon Hexagon Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y(Random) Y(4Points) Y(Random) Y(3Points) Y(4Points) Y(5Points) Y(6Points) 5. 4 草圖 DXF存儲(chǔ)讀取功能的實(shí)現(xiàn) 草圖在繪制完畢后需要進(jìn)行存儲(chǔ)與讀取,為了使系統(tǒng)所存儲(chǔ)的草圖數(shù)據(jù)能與其他CAD 軟件進(jìn)行交換,系統(tǒng)采用 DXF 文件格式對(duì)草圖進(jìn)行存儲(chǔ)。在實(shí)現(xiàn)該部分功能時(shí),需要詳細(xì)研究 DXF 機(jī)制,主要思路是對(duì)不同類(lèi)型的草圖提取其各自的特征屬性(見(jiàn)表),再將其轉(zhuǎn)化為 DXF 文件的各個(gè)段中的信息,最終以 ASCII 字符串的形式存儲(chǔ)。 草圖的 DXF 存儲(chǔ)界面如下: 圖 草圖的 DXF存儲(chǔ)界面 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 27 草圖的 DXF 讀取界面如下: 圖 草圖的 DXF讀取界面 DXF文件是基于向量的 ASCII碼文件,所以保存后的 DXF文件可以被記事本打開(kāi),如下為 Line 的 DXF 文件被記事本打開(kāi)的形式: 圖 以記事本方式打開(kāi)的 Line的 DXF文件 經(jīng)測(cè)試,本繪圖系統(tǒng)所繪制的草圖在保存為 DXF 文件之后可以被 CAD 軟件正確讀取和識(shí)別。如下圖所示: 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 28 圖 本系統(tǒng)所繪草圖 圖 AutoCAD系統(tǒng)所打開(kāi)的本系 統(tǒng)所存 DXF文件 AutoCAD 軟件并不支持圖形的數(shù)據(jù)庫(kù)存儲(chǔ),本系統(tǒng)的擴(kuò)展功能為支持將草圖特征信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,但這種存儲(chǔ)形式并非 DXF 格式,從而并不能實(shí)現(xiàn)與其他 CAD軟件的數(shù)據(jù)交換與兼容,所設(shè)計(jì)的數(shù)據(jù)庫(kù)表單以畫(huà)板表、 Line 表、 Circle 表為例展示如下: 表 畫(huà)板表 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 29 序號(hào) 字段名 字段說(shuō)明 類(lèi)型 寬度 1 2 3 4 5 6 7 8 9 id name count linenumber liype linecolor fillstyle fillcolor textstyle 惟一標(biāo)識(shí)分類(lèi) (畫(huà)板號(hào) ) 畫(huà)板名稱(chēng) 實(shí)體數(shù)量 線寬 線型 線性顏色 填充方式 填充顏色 字體樣式 int nvarchar int int char int char int char 4 10 4 4 10 4 10 4 10 表 Line 表 序號(hào) 字段名 字段說(shuō)明 類(lèi)型 寬度 1 2 3 4 5 6 7 id fid startpoint endpoint linenumber liype linecolor 惟一標(biāo)識(shí)分類(lèi) 所屬畫(huà)板號(hào) 起始點(diǎn) 終點(diǎn) 線寬 線型 線性顏色 int int double double int char int 4 4 4 4 4 10 4 表 Circle