【正文】
hics對(duì)象 , 然后才可以使用 GDI+繪制線條和形狀、呈現(xiàn)文本或顯示與操作圖像。圖層功能: 利用標(biāo)準(zhǔn)文件功能,可以對(duì)諸如圖層、文字樣式、線型這樣的命名對(duì)象定義標(biāo)準(zhǔn)的設(shè)置 , 利用圖層轉(zhuǎn)換器能夠?qū)?dāng)前圖形圖層的名稱和特性轉(zhuǎn)換成己有圖形或標(biāo)準(zhǔn)文件對(duì)圖層的設(shè)置 。 DXF 文件被組織成為多個(gè) “ 段 ” ( SECTION),每個(gè)段以組碼 “0” 和字符串“SECTION” 開頭,緊接著是組碼 “2” 和表示段名的字符串(如 HEADER),可以使用組碼和值定義段中的元素。正交功能使用戶可以很方便地繪制水平、豎直直線,對(duì)象 捕捉可幫助拾取幾何對(duì)象上的特殊點(diǎn),而追蹤功能使畫斜線及沿不同方向定位點(diǎn)變得更加容易。但由于項(xiàng)目的多樣性、多變性 , 使得手工繪圖周期長(zhǎng)、效率低、重復(fù)勞動(dòng)多,從而阻礙了建設(shè)的發(fā)展。 基于 DXF 技術(shù)的草圖繪制系統(tǒng)就是要實(shí)現(xiàn)基本草圖的繪制和編輯功能,并且能夠?qū)⑺L制的草圖以 DXF 文件格式保存到存儲(chǔ)器或者數(shù)據(jù)庫(kù),從而使其它支持DXF 格式的 CAD 軟件能夠?qū)⑵浯蜷_和進(jìn)行二次開發(fā),此草圖繪制系統(tǒng)還能打開標(biāo)準(zhǔn)的 DXF 格式的文件并對(duì)其進(jìn)行二次開發(fā)。由微機(jī)配上圖形輸入和輸出設(shè)備 (如鍵盤、鼠標(biāo)、繪圖儀 )以及計(jì)算機(jī)繪圖軟件,就組成一套計(jì)算機(jī)輔助繪圖系統(tǒng)。 此外還具有 網(wǎng)絡(luò)功能 : 可將圖形在網(wǎng)絡(luò)上發(fā)布,或是通過(guò)網(wǎng)絡(luò)訪問(wèn) AutoCAD 資源 ; 數(shù)據(jù)交換 功能: AutoCAD 提供了多種圖形圖像數(shù)據(jù)交換格式及相應(yīng)命令 ; 二次開發(fā) :AutoCAD 允許用戶定制菜單和 工具欄 ,并能利用內(nèi)嵌語(yǔ)言 Autolisp、 Visual Lisp、VBA、 ADS、 ARX 等進(jìn)行二 次開發(fā) AutoCAD 的更新升級(jí)的速度非???,每個(gè)新版本都會(huì)加入一些更新更強(qiáng)大的功能。 ASCII 格式的 DXF 文件 可以用 文本編輯器 進(jìn)行查看。本課題主要研究 C的 GDI+繪圖機(jī)制 。 與 Graphics對(duì)象一起使用的主要對(duì)象有以下 4種 : Pen類 —— 用于繪制線條、勾勒形狀輪廓或呈現(xiàn)其他幾何表示形式。 操作界面由 WhiteBoard 用戶控件、 DrawArea 用戶控件、 ToolStrip1 系統(tǒng)控件、ToolStrip2 系統(tǒng)控件構(gòu)成。即使是一位精明的畫師能輕松繪出各種圖形,拿到鼠標(biāo)想隨心所欲的畫圖也不是一件容易的事。 繪制圓的流程圖如下: 開 始鼠 標(biāo) 左 鍵 點(diǎn) 擊 繪 圖 區(qū) 域 , 獲 取 其坐 標(biāo) 為 圓 心 坐 標(biāo) 點(diǎn) C e n t e r P o i n t調(diào) 用 g . D r a w E l l i p s e ( P e n , C e n t e r P o i n t . X R a d i u s , C e n t e r P o i n t . Y R a d i u s , 2 * R a d i u s , 2 * R a d i u s ) 函 數(shù) 將 圓 繪 出結(jié) 束生 成 G r a p h i c 對(duì) 象 g拖 動(dòng) 鼠 標(biāo) 獲 取 其 坐 標(biāo) 點(diǎn) 與 圓 心 坐標(biāo) 點(diǎn) 之 間 的 距 離 為 圓 半 徑 R a d i u s鼠 標(biāo) 左 鍵 是 否 按 下否是 圖 繪制圓的流程圖 橢圓( Ellipse)的繪制 橢圓的繪制需要在繪圖區(qū)域捕獲一個(gè)矩形區(qū)域 Rectangle,以該矩形的長(zhǎng)作為橢圓的長(zhǎng)軸長(zhǎng)度,以該矩形的高作為橢圓的短軸長(zhǎng)度。 改變線條寬度 系統(tǒng)所設(shè)置的畫筆線條寬度分為五種,寬度依次變大,通過(guò)改變 PenWidth 而實(shí)現(xiàn)具體的線條粗細(xì)的改變,下面以正三角形為例展示: 圖 1px 寬度 圖 5px 寬度 改變線條樣式 系統(tǒng)所設(shè)置的畫筆線條樣式分為兩種,分別為 實(shí)線、虛線,通過(guò)改變 PenStyle而實(shí)現(xiàn)具體的線條樣式的改變,下面以橢圓為例展示: 圖 實(shí)線條 圖 虛線條 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書 24 改變線條顏色 系統(tǒng)所設(shè)置的畫筆線條顏色為 Windows 操作系統(tǒng)所提供,通過(guò)改變 PenColor 而實(shí)現(xiàn)具體的線條顏色的改變。 起始角度 public float SweepAngel = 0。 起始點(diǎn) public Point EndPoint = new Point()。 繪制正六邊形的效果圖如下: 圖 繪制正六邊形的效果圖 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書 22 繪制正六邊形的流程圖如下: 開 始鼠 標(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,最后調(diào)用 (Pen, Rectangle, StartAngle, SweepAngle)函數(shù)將其繪出。 貝塞爾 曲線的有趣之處更在于它的 “ 皮筋效應(yīng) ” , 也就是說(shuō),隨著點(diǎn)有規(guī)律地移動(dòng),曲線將產(chǎn)生皮筋伸引一樣的變換,帶來(lái)視覺上的沖擊。 SQL提供的兩種使用方式:一種是自含語(yǔ)言,是一種以獨(dú)立語(yǔ)言的方式與機(jī)器進(jìn)行交互,是非過(guò)程化語(yǔ)言,用戶只需提出操作要求,發(fā)出 SQL命令,而不必提出操作步驟;另一種是宿主語(yǔ)言,是將 SQL命令嵌入某種高級(jí)程序設(shè)計(jì) 語(yǔ)言中,以實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作,從整個(gè)程序來(lái)講是過(guò)程化的,程序中規(guī)定了操作的步驟,但嵌入的 SQL語(yǔ)言仍是非過(guò)程化的,完成該語(yǔ)句的過(guò)程由系統(tǒng)經(jīng)過(guò)優(yōu)化決定。 GDI+中的新功能之一是子像素消除鋸齒,它可以使文本在 LCD(Liquid Crystal Display)屏幕上呈現(xiàn)時(shí)顯得比較平滑。同時(shí)還具有文字標(biāo)注功能:對(duì)于 文字說(shuō)明、技術(shù)要求等 , 用戶 可 設(shè)置 文字樣式 ,以便 使用不同的 字體 、大小等設(shè)置標(biāo)注文字各種形式的尺寸 , 設(shè)置尺寸標(biāo)注樣式 , 可隨時(shí)更改己有標(biāo)注值或標(biāo)注樣式 , 可實(shí)現(xiàn)關(guān)聯(lián)標(biāo)注 。每個(gè)組碼和值必須為單獨(dú)的一行。 AutoCAD 提供了正交、對(duì)象捕捉、極軸追蹤、捕捉追蹤等繪圖輔助工具。一項(xiàng)工程圖的繪制通常是在歷經(jīng)數(shù)遍修改完善后才完成的。 本課題主要研究利用基于 VS2020的 C語(yǔ)言所提供的 GDI+繪圖技術(shù)及 AutoCAD所開發(fā)的 DXF 技術(shù),實(shí)現(xiàn)各種基本工程草圖的繪制功能,并在此基礎(chǔ)之上實(shí)現(xiàn)對(duì)草圖的 DXF 格式的計(jì)算機(jī)存儲(chǔ)、讀取和各種編輯功能。在設(shè)計(jì)中通常要用計(jì)算機(jī)對(duì)不同方案進(jìn)行大量的計(jì)算、分析和比較,以決定最優(yōu)方案;各種設(shè)計(jì)信息,不論是數(shù)字的、文字的或圖形的,都能存放在計(jì)算機(jī)的內(nèi)存或外存里,并能快速地檢索;設(shè)計(jì)人員通常用草圖開始設(shè)計(jì),將草圖變?yōu)楣ぷ鲌D的繁重工作可以交給計(jì)算機(jī)完成;由計(jì)算機(jī)自動(dòng)產(chǎn)生的設(shè)計(jì)結(jié)果,可以快速作 出圖形顯示出來(lái),使設(shè)計(jì)人員及時(shí)對(duì)設(shè)計(jì)作出判斷和修改;利用計(jì)算機(jī)可以進(jìn)行與圖形的編輯、放大、縮小、平移和旋轉(zhuǎn)等有關(guān)的圖形數(shù)據(jù)加工工作。 AutoCAD 榮登全球繪圖軟件的龍頭寶座,主要是因?yàn)樗哂虚_放的體系結(jié)構(gòu)。 DXF 文件的基本組成如下所示: HEADER 部分 圖的總體信息。 Windows窗體提供的圖形類型分為下面三類: 二維矢量圖形 二維矢量圖形是繪圖的基本元素(例如 : 直線、曲線和圖形)。 Brush類 —— 用于填充圖形區(qū)域,如實(shí)心形狀、圖像或文本。其中 DrawArea 用戶控件、 ToolStrip1 系統(tǒng)控件、ToolStrip2 系統(tǒng)控件被集成在 WhiteBoard 用戶控件之中,而 DrawArea 控件則為草圖繪制和編輯區(qū)域, ToolStrip1 控件和 ToolStrip2 控件則用來(lái)對(duì)系統(tǒng)的各項(xiàng)參數(shù)進(jìn)行設(shè)置。這一點(diǎn)是計(jì)算機(jī)萬(wàn)萬(wàn)不能代替手工的工作,所以到目前為止人們只能頗感無(wú)奈。獲取參數(shù)后生成 所提供的 Graphics 對(duì)象 g,所以調(diào)用 (Pen,Rectangle)函數(shù)即可將橢圓繪出。 改變草圖的形狀與大小 為了能改變草圖的形狀和大小,系統(tǒng)為每種類型的草圖都設(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è)類型草圖的鎖定紅框: 圖 各個(gè)類型草圖的鎖定紅框 填充閉合草圖 系統(tǒng)提供三種不同的方式填充閉合草圖,分別為有邊框白色填充、有邊框顏色填充、無(wú)邊框顏色填充。 掃過(guò)角度 public ListPoint PointList = new ListPoint()。 畫刷顏色 填充閉合圖形時(shí)用 public Point StartPoint = new Point()。獲取參數(shù)后生成 Graphics 對(duì)象 g,最后調(diào) 用 (Pen, CurvePoints)函數(shù)將正六邊形繪出。 輸入起始角度 StartAngle 和掃過(guò)角度 SweepAngle 的界面如下: 圖 起始角度和掃過(guò)角度的輸入界面 繪制弧線的流程圖如下: 開 始鼠 標(biāo) 左 鍵 點(diǎn) 擊 繪 圖 域 , 拖 動(dòng) 獲 取 R e c t a n g l e 矩 形 框輸 入 起 始 角 度 S t a r t A n g l e 、 掃 過(guò) 角 度 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 對(duì) 象 g鼠 標(biāo) 左 鍵 是 否 按 下否是 圖 繪制弧線的流程圖 2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書 16 扇形( PieSlice)的繪制 扇形的繪制需要在繪圖區(qū)域捕獲一個(gè)矩形框,此矩形框?yàn)榇_定所繪扇形大小尺寸的參數(shù) Rectangle,此外要繪制圓餅或橢圓餅上任意角度的扇形還需輸入起始角度StartAngle 和掃過(guò)角度 SweepAngle 以確定其形狀。在歷史上,研究 貝塞爾 曲線的人最初是按照已知曲線 參數(shù)方程 來(lái)確定四個(gè)點(diǎn)的思路設(shè)計(jì)出這種矢量曲線繪制法。具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從運(yùn)行 Microsoft Windows 98 的 小 型電腦到運(yùn)行 Microsoft Windows 2020 的大型多處理器的服務(wù)器等多種平臺(tái)。 GDI是 圖 形設(shè)備接口 , 它的主要任務(wù)是負(fù)責(zé)系統(tǒng)與繪圖程序之間的信息交換,處理所有 Windows程序的圖形輸出。 AutoCAD2020 具有強(qiáng)大的 二維 繪圖與編輯功能 :可繪制 基本二維圖形對(duì)象 ,如 直線、 射線 ,構(gòu)造線、圓、圓環(huán)、圓弧、 橢圓 、矩形、等邊多邊形、 樣條曲線 、多段線、云線 等, 為封閉區(qū)域填充圖案、創(chuàng)建圖塊 ,對(duì)圖形對(duì)象進(jìn)行 刪除、移動(dòng)、復(fù)制、 鏡像 、陣列、延伸、修剪、縮放等 功能。 DXF 文件是由很多的 “ 代碼 ” 和 “ 值 ” 組成的 “ 數(shù)據(jù)對(duì) ” 構(gòu)造而 成,這里的代碼稱為 “ 組碼 ” ( group code),指定其后的值的類型和用途。 CAD 的 平面繪圖 功能 能以多種方式創(chuàng)建直線、圓、 橢圓 、多邊形、 樣條曲線 等基本圖形對(duì)象。然而 , 圖紙的繪制是一項(xiàng)極其繁瑣的工作 , 不但要求正確、精確 , 而且隨著環(huán)境、需求等外部條件的變化 , 設(shè)計(jì)方案也會(huì)隨之變化。課題工作主要分為三個(gè)部分:第一部分是搭建系統(tǒng)架構(gòu),設(shè)計(jì)繪圖系統(tǒng)的操作界面;第二部分是設(shè)計(jì)基本草圖的繪制方法,實(shí)現(xiàn)基本草圖的繪制和編輯功能;第三部分是設(shè)計(jì)和實(shí)現(xiàn)基于DXF 技術(shù)的基本草圖的存儲(chǔ)和讀取機(jī)制。CAD 能夠減輕設(shè)計(jì)人員的計(jì)算畫圖等重復(fù)性勞動(dòng),專注于設(shè)計(jì)本身,縮短設(shè)計(jì)周期和提高設(shè)計(jì)質(zhì)量。其中的一種方法就是利用開放的 DXF 接口將繪制的模型保存為標(biāo)準(zhǔn)的 DXF 格式,這樣做2020 屆本科畢業(yè)設(shè)計(jì)說(shuō)明書 3 就可以提高軟件之間的兼容性大大的提升開發(fā)效率。每個(gè)參數(shù)都有一個(gè)變量名和相應(yīng)的值。它們由坐標(biāo)系統(tǒng)上的一些點(diǎn)和另外一些描述參數(shù)指定。 Font類 —— 提供在呈現(xiàn)文本時(shí)要使用什么形狀的有關(guān)說(shuō)明