【正文】
t . X , N e x t P o i n t . Y ) 函 數(shù) 將 多 段 線 最 后 一 段 繪 出是否P o i n t L i s t 數(shù) 組 元 素 個 數(shù) 是 否 大 于 1否是生 成 G r a p h i c s 對 象 圖 繪制多段線的流程圖 2020 屆本科畢業(yè)設(shè)計說明書 15 弧線( Arc)的繪制 弧線的繪制需要在繪圖區(qū)域捕獲一個矩形框,此矩形框為確定所繪弧線大小尺寸的參數(shù) Rectangle,此外要繪制圓或橢圓上任意角度的弧線還需輸入起始角度StartAngle 和掃過角度 SweepAngle 以確定弧線的起始點和終止點。 輸入起始角度 StartAngle 和掃過角度 SweepAngle 的界面如下: 圖 起始角度和掃過角度的輸入界面 扇形的繪制流程類似弧線的繪制流程,但因其為閉合圖形,所以可以設(shè)置其繪制時的填充方式。獲取參數(shù)后生成 所提供的 Graphics 對象 g,所以調(diào)用 (Pen,Rectangle)函數(shù)即可將橢圓繪出。獲取參數(shù)后生成 所提供的 Graphics 對象 g,最后調(diào)用 (Pen, CurvePoints)函數(shù)將正三角形繪出。獲取參數(shù)后生成 提供的 Graphics 對象 g,最后調(diào)用 (Pen, CurvePoints)函數(shù)將正五邊形繪出。獲取參數(shù)后生成 提供的Graphics 對象 g,然后將 PointList 數(shù)組中的點按順序依次取出,使每兩個相鄰的點作為參數(shù),調(diào)用 (Pen, PointList [i].x, PointList [i].y, PointList [i1].x, PointList [i1].y)函數(shù)將點軌跡曲線繪出。 改變草圖的形狀與大小 為了能改變草圖的形狀和大小,系統(tǒng)為每種類型的草圖都設(shè)置了鎖定紅框,鎖定紅框的作用就是紅框勾勒出圖形的大致輪廓,并以小紅點的形式標(biāo)記出可以改變 圖形形狀和大小的特殊點,當(dāng)鼠標(biāo)左鍵單擊已繪制的草圖時鎖定紅框隨即出現(xiàn),當(dāng)鼠標(biāo)移動到特殊點時光標(biāo)形狀會發(fā)生變化,此時按下左鍵通過改變光標(biāo)位置即可實現(xiàn)草圖的形狀大小的改變,下圖為各個類型草圖的鎖定紅框: 圖 各個類型草圖的鎖定紅框 填充閉合草圖 系統(tǒng)提供三種不同的方式填充閉合草圖,分別為有邊框白色填充、有邊框顏色填充、無邊框顏色填充。 系統(tǒng)存儲圖形特征屬性的類的結(jié)構(gòu)如下表: 表 存儲圖形特征屬性的類的結(jié)構(gòu)表 變量名 所存儲的圖形特征屬性 public DrawObjectType Type = new DrawObjectType()。 閉合圖形填充方式 默認(rèn)為有邊框白色填充 public Color PenColor = new Color()。 終止點 public Point ControlPoint1 = new Point()。 掃過角度 public ListPoint PointList = new ListPoint()。如下圖所示: 2020 屆本科畢業(yè)設(shè)計說明書 28 圖 本系統(tǒng)所繪草圖 圖 AutoCAD系統(tǒng)所打開的本系 統(tǒng)所存 DXF文件 AutoCAD 軟件并不支持圖形的數(shù)據(jù)庫存儲,本系統(tǒng)的擴(kuò)展功能為支持將草圖特征信息存儲到數(shù)據(jù)庫中,但這種存儲形式并非 DXF 格式,從而并不能實現(xiàn)與其他 CAD軟件的數(shù)據(jù)交換與兼容,所設(shè)計的數(shù)據(jù)庫表單以畫板表、 Line 表、 Circle 表為例展示如下: 表 畫板表 2020 屆本科畢業(yè)設(shè)計說明書 29 序號 字段名 字段說明 類型 寬度 1 2 3 4 5 6 7 8 9 id name count linenumber liype linecolor fillstyle fillcolor textstyle 惟一標(biāo)識分類 (畫板號 ) 畫板名稱 實體數(shù)量 線寬 線型 線性顏色 填充方式 填充顏色 字體樣式 int nvarchar int int char int char int char 4 10 4 4 10 4 10 4 10 表 Line 表 序號 字段名 字段說明 類型 寬度 1 2 3 4 5 6 7 id fid startpoint endpoint linenumber liype linecolor 惟一標(biāo)識分類 所屬畫板號 起始點 終點 線寬 線型 線性顏色 int int double double int char int 4 4 4 4 4 10 4 表 Circle 表。在實現(xiàn)該部分功能時,需要詳細(xì)研究 DXF 機(jī)制,主要思路是對不同類型的草圖提取其各自的特征屬性(見表),再將其轉(zhuǎn)化為 DXF 文件的各個段中的信息,最終以 ASCII 字符串的形式存儲。 控制點 2 public float StartAngel = 0。 畫刷顏色 填充閉合圖形時用 public Point StartPoint = new Point()。 畫筆寬度 public PenStyle PenStyle = 。 2020 屆本科畢業(yè)設(shè)計說明書 25 5. 3 草圖復(fù)制粘貼功能的實現(xiàn) 草圖繪制系統(tǒng)所實現(xiàn)的復(fù)制粘貼功能涉及系統(tǒng)所具備的各種草圖類型,復(fù)制粘貼功能既可以在單獨的繪圖系統(tǒng)中使用,也可以完成在同時開啟的兩個不 同的繪圖系統(tǒng)間的草圖的復(fù)制與粘貼。 繪制點軌跡曲線的效果圖如下: 圖 繪制點軌跡曲線的效果圖 2020 屆本科畢業(yè)設(shè)計說明書 23 繪制點軌跡曲線的流程圖如下: 開 始鼠 標(biāo) 左 鍵 點 擊 繪 圖 區(qū) 域 , 鼠 標(biāo) 停 留 于 原 點 或 移 動 并獲 取 其 坐 標(biāo) 點 作 為 參 數(shù) 存 入 P o i n t L i s t 數(shù) 組 以 P o i n t L i s t 中 每 兩 個 相 鄰 的 元 素 為 參 數(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ù) 將 點 軌 跡 曲 線 繪 出結(jié) 束生 成 G r a p h i c 對 象 g鼠 標(biāo) 左 鍵 是 否 按 下是否 圖 繪制點軌跡曲線的流程圖 5. 2 草圖編輯功能的實現(xiàn) 草圖的編輯功能主要是改變草圖的線條寬度、線條樣式、線條顏色、形狀和大小以及動態(tài)拖動草圖。獲取參數(shù)后生成 Graphics 對象 g,最后調(diào) 用 (Pen, CurvePoints)函數(shù)將正六邊形繪出。獲取參數(shù)后生成 提供的 Graphics 對象 g,最后調(diào)用 (Pen, CurvePoints)函數(shù)將正方形繪出。獲取參數(shù)后生成 所提供的 Graphics 對象 g,最后調(diào)用(Pen,Rectangle)函數(shù)將矩形繪出。獲取參數(shù)后生成 所提供的 Graphics 對象 g,因為圓屬于一種特殊的橢圓,所以調(diào)用 (Pen, Radius, Radius, 2 * Radius, 2 * Radius)函數(shù)將圓繪出。 輸入起始角度 StartAngle 和掃過角度 SweepAngle 的界面如下: 圖 起始角度和掃過角度的輸入界面 繪制弧線的流程圖如下: 開 始鼠 標(biāo) 左 鍵 點 擊 繪 圖 域 , 拖 動 獲 取 R e c t a n g l e 矩 形 框輸 入 起 始 角 度 S t a r t A n g l e 、 掃 過 角 度 S w e e p A n g l e調(diào) 用 g . D r a w A r c ( P e n , R e c t a n g l e , S t a r t A n g l e , S w e e p A n g l e ) 函 數(shù) 將 弧 線 繪 出結(jié) 束生 成 G r a p h i c 對 象 g鼠 標(biāo) 左 鍵 是 否 按 下否是 圖 繪制弧線的流程圖 2020 屆本科畢業(yè)設(shè)計說明書 16 扇形( PieSlice)的繪制 扇形的繪制需要在繪圖區(qū)域捕獲一個矩形框,此矩形框為確定所繪扇形大小尺寸的參數(shù) Rectangle,此外要繪制圓餅或橢圓餅上任意角度的扇形還需輸入起始角度StartAngle 和掃過角度 SweepAngle 以確定其形狀。 在生成 Graphics 對象 g 后,以 PointList 數(shù)組中依次 相鄰的兩點 PriorPoint、NextPoint 為參數(shù),循環(huán)調(diào)用 (Pen, , , 2020 屆本科畢業(yè)設(shè)計說明書 14 , ,)函數(shù)將多段線各段首尾相接逐段繪出。 貝塞爾曲線的繪制需要在繪圖區(qū)域捕獲四個坐標(biāo)點,第一個坐標(biāo)點為貝塞爾曲線的起始坐標(biāo)點 StartPoint,第二個坐標(biāo)點為貝塞爾曲線的終止坐標(biāo)點 EndPoint,然后生成 所提供的 Graphics 對象 g 并調(diào)用 (Pen, , , , )函數(shù)繪出貝塞爾曲線的主體直線,第三個坐標(biāo)點為貝塞爾曲線的其中一個控制坐標(biāo)點 ControlPoint1,還需調(diào)用 (Pen,StartPoint,ControlPoint1,ControlPoint1,EndPoint)繪制單控制點貝塞爾曲線,第四個坐標(biāo)點為貝塞爾曲線的另一個控制坐標(biāo)點 ControlPoint2,此時調(diào)用 (Pen,StartPoint,ControlPoint1,ControlPoint2,EndPoint)完整的貝塞爾曲線即繪制完畢。 貝塞爾曲線的重要作用在于: 由于用計算機(jī)畫圖大部分時間是操作鼠標(biāo)來掌握線條的路徑,與手繪的感覺和效果有很大的差別。在歷史上,研究 貝塞爾 曲線的人最初是按照已知曲線 參數(shù)方程 來確定四個點的思路設(shè)計出這種矢量曲線繪制法。在繪制草圖之前要首先設(shè)置系統(tǒng)的畫筆( Pen)參數(shù),包括畫筆線條寬度 、顏色、虛實等,其次對于閉合圖形還可設(shè)置其填充方式和顏色。 下圖為操作界面設(shè)計圖: 圖 系統(tǒng)主操作界面 4. 4 草圖存儲讀取機(jī)制的設(shè)計 繪制草圖的核心功能是通過調(diào)用 GDI+提供的繪圖方法而實現(xiàn) ,圖形在繪制完成之后,系統(tǒng)要能夠?qū)⑵浔4娴酱鎯ζ骰蛘邤?shù)據(jù)庫中,這就需要提取每個圖形的基本特征屬性,然后再按照 DXF 的格式將其存儲。用戶可在系統(tǒng)參數(shù)設(shè)置區(qū)域上進(jìn)行功能 和參數(shù)選擇,在繪圖區(qū)域上對草圖進(jìn)行繪制和編輯,以求達(dá)到預(yù)期的繪圖效果。具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點,可跨越從運(yùn)行 Microsoft Windows 98 的 小 型電腦到運(yùn)行 Microsoft Windows 2020 的大型多處理器的服務(wù)器等多種平臺。 SQL語句可以用來執(zhí)行各種各樣的操作,例如更新數(shù)據(jù)庫中的數(shù)據(jù),從數(shù)據(jù)庫中提取數(shù)據(jù)等。 Color類 —— 表示要顯示的不同顏色。 Graphics對象在創(chuàng)建后,可用于繪制線條和形狀、呈現(xiàn)文本或顯示與操作圖像。 GDI是 圖 形設(shè)備接口 , 它的主要任務(wù)是負(fù)責(zé)系統(tǒng)與繪圖程序之間的信息交換,處理所有 Windows程序的圖形輸出。色彩豐富且分辨率高的數(shù)碼照片會更難以使用矢量技術(shù)來制作。例如,直線可通過它的兩個端點來指定;而矩形可通過確定其左上角的點并給出其寬度和高度的一對數(shù)字來指定:簡單路徑可通過由直線連接的點的數(shù)組來指定;貝塞爾曲線是由 4個控制點指定的復(fù)雜曲線。 C是 微軟 (Microsoft)為 .NET Framework量身訂做的程序語言 , C擁有 C/C++的強(qiáng)大功能以及 Visual Basic簡易使用的特性 。 AutoCAD2020 具有強(qiáng)大的 二維 繪圖與編輯功能 :可繪制 基本二維圖形對象 ,如 直線、 射線 ,構(gòu)造線、圓、圓環(huán)、圓弧、 橢圓 、矩形、等邊多邊形、 樣條曲線 、多段線、云線 等, 為封閉區(qū)域填充圖案、創(chuàng)建圖塊 ,對圖形對象進(jìn)行 刪除、移動、復(fù)制、 鏡像 、陣列、延伸、修剪、縮放等 功能。 ENTITIES 部分 這部分是繪圖實體,包括 Block References 在內(nèi)。 2020 屆本科畢業(yè)設(shè)計說明書 4 CLASSES 部分 包括 應(yīng)用程序 定義的類的信息,這些實例將顯示在 BLOCKS、ENTITIES 以及 OBJECTS 部分。由于 DXF 文件可讀性好 , 用戶可方便地對它進(jìn)行修改 、 編程 , 達(dá)到從外部 對 圖形進(jìn)行編輯 , 修改的目的。 DXF 文件是由很多的 “ 代碼 ” 和 “ 值 ” 組成的 “ 數(shù)據(jù)對 ” 構(gòu)造而 成,這里的代碼稱為 “ 組碼 ” ( grou