




已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于GDI+2D圖形軟件開發(fā)方法初探2D幾何畫板摘要基于GDI2D圖形軟件開發(fā)方法初探2D幾何畫板,是采用Microsoft Visual C 2.0為開發(fā)語言,Microsoft .NET Framework 2.0為支撐平臺開發(fā)的用于研究二維圖形的圖形軟件。矚慫潤厲釤瘞睞櫪廡賴。2D幾何畫板的開發(fā),主要是研究GDI+技術在二維圖形軟件中的開發(fā)方法的探索。在該系統(tǒng)中,實現一些基本的圖形繪制,如點、線、圓的繪制,及一些自定義圖形的繪制,如多邊形,曲線,帶外接圓的三角形的繪制;實現基本的測量,如角度的測量,長度的測量,跨度的測量等;實現直角坐標系函數軌跡圖形的繪制,要求為輸入一個函數表達式的字符串,然后自動繪制出相關的軌跡圖形;對繪制結果實現序列化,實現可以重復操作圖元;圖元的存儲、選取、修改,實現圖元的動態(tài)性,如選中對象時可以拖動,改變大小等。聞創(chuàng)溝燴鐺險愛氌譴凈。2D幾何畫板除了實現基本的圖形的繪制外,還實現了共點運動,可以動態(tài)的觀察二維空間中關聯對象的共點運動,當某個對象的相關屬性改變時,對其他關聯對象的影響;還可以精確的定位相關對象的相關屬性,如圓的半徑,曲線的張力等。殘騖樓諍錈瀨濟溆塹籟。本論文首先介紹了項目開發(fā)的背景,相關開發(fā)工具、開發(fā)語言和平臺的介紹,然后是系統(tǒng)的總體設計,系統(tǒng)的詳細設計,包括窗口界面,圖形繪制模塊,測量模塊,2D函數圖形繪制模塊,序列化模塊的設計。釅錒極額閉鎮(zhèn)檜豬訣錐。關鍵詞:面向對象;命名空間;序列化;GDI+;圖元GDI+ Based Development of 2D Geometers SketchpadABSTRACTGDI+ Based Development of 2D Geometers Sketchpad ,as GDI + on a two-dimensional graphics technology in software development methods of exploration, from basic graphics rendering, the sequence of elements of the object and function of two-dimensional imaging is of great significance. The system has basic graphics rendering, elements of the sequence, two-dimensional mapping function graphics, objects associated elements of movement points for the observation of the dynamic nature of objects.彈貿攝爾霽斃攬磚鹵廡。Basic elements, including point, line, round, curves, triangles, polygons, rectangular, diamond, and these special elements derived from the basic elements, such as the triangle with circumcircle.謀蕎摶篋飆鐸懟類蔣薔。Key words: Object-Oriented;Naming Space; Serialization; GDI +;Metafile廈礴懇蹣駢時盡繼價騷。畢業(yè)論文(設計)原創(chuàng)性聲明本人所呈交的畢業(yè)論文(設計)是我在導師的指導下進行的研究工作及取得的研究成果。據我所知,除文中已經注明引用的內容外,本論文(設計)不包含其他個人已經發(fā)表或撰寫過的研究成果。對本論文(設計)的研究做出重要貢獻的個人和集體,均已在文中作了明確說明并表示謝意。 煢楨廣鰳鯡選塊網羈淚。作者簽名: 日期: 畢業(yè)論文(設計)授權使用說明本論文(設計)作者完全了解*學院有關保留、使用畢業(yè)論文(設計)的規(guī)定,學校有權保留論文(設計)并向相關部門送交論文(設計)的電子版和紙質版。有權將論文(設計)用于非贏利目的的少量復制并允許論文(設計)進入學校圖書館被查閱。學??梢怨颊撐模ㄔO計)的全部或部分內容。保密的論文(設計)在解密后適用本規(guī)定。 鵝婭盡損鵪慘歷蘢鴛賴。 作者簽名: 指導教師簽名: 日期: 日期: 注 意 事 項1.設計(論文)的內容包括:1)封面(按教務處制定的標準封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關鍵詞4)外文摘要、關鍵詞 5)目次頁(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結論7)參考文獻8)致謝9)附錄(對論文支持必要時)2.論文字數要求:理工類設計(論文)正文字數不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字數不少于1.2萬字?;[叢媽羥為贍僨蟶練淨。3.附件包括:任務書、開題報告、外文譯文、譯文原文(復印件)。4.文字、圖表要求:1)文字通順,語言流暢,書寫字跡工整,打印字體及大小符合要求,無錯別字,不準請他人代寫2)工程設計類題目的圖紙,要求部分用尺規(guī)繪制,部分用計算機繪制,所有圖紙應符合國家技術標準規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準用徒手畫預頌圣鉉儐歲齦訝驊糴。3)畢業(yè)論文須用A4單面打印,論文50頁以上的雙面打印4)圖表應繪制于無格子的頁面上5)軟件工程類課題應有程序清單,并提供電子文檔5.裝訂順序1)設計(論文)2)附件:按照任務書、開題報告、外文譯文、譯文原文(復印件)次序裝訂3)其它目 錄1引言1滲釤嗆儼勻諤鱉調硯錦。2開發(fā)背景3鐃誅臥瀉噦圣騁貺頂廡。2.1當代信息技術的發(fā)展現狀3擁締鳳襪備訊顎輪爛薔。2.1.1當代信息技術的發(fā)展3贓熱俁閫歲匱閶鄴鎵騷。2.1.2計算機處理能力的發(fā)展3壇摶鄉(xiāng)囂懺蔞鍥鈴氈淚。2.2 .NET框架的簡介4蠟變黲癟報倀鉉錨鈰贅。2.2.1 .Net框架簡介4買鯛鴯譖曇膚遙閆擷凄。2.2.2 .Net框架的組成4綾鏑鯛駕櫬鶘蹤韋轔糴。2.2.3.Net框架的特性5驅躓髏彥浹綏譎飴憂錦。2.2.4 .Net的名字空間6貓蠆驢繪燈鮒誅髏貺廡。2.2.5 .Net2.0平臺介紹7鍬籟饗逕瑣筆襖鷗婭薔。2.3 C簡介7構氽頑黌碩飩薺齦話騖。2.3.1什么是C#7輒嶧陽檉籪癤網儂號澩。2.3.2 C#的特點8堯側閆繭絳闕絢勵蜆贅。2.3.3 C#的語言特性9識饒鎂錕縊灩筧嚌儼淒。2.4 GDI+簡介10凍鈹鋨勞臘鍇癇婦脛糴。2.4.1什么是GDI+10恥諤銪滅縈歡煬鞏鶩錦。2.4.2 GDI+的體系結構圖11鯊腎鑰詘褳鉀溈懼統(tǒng)庫。2.4.3 GDI+的構成11碩癘鄴頏謅攆檸攜驤蘞。2.4.4 GDI+的新特色12閿擻輳嬪諫遷擇楨秘騖。3系統(tǒng)總體設計15氬嚕躑竄貿懇彈瀘頷澩。3.1系統(tǒng)總體結構15釷鵒資贏車贖孫滅獅贅。3.2系統(tǒng)模塊結構16慫闡譜鯪逕導嘯畫長涼。3.3系統(tǒng)類結構16諺辭調擔鈧諂動禪瀉類。3.4系統(tǒng)運行環(huán)境19嘰覲詿縲鐋囁偽純鉿錈。3.5規(guī)格說明19熒紿譏鉦鏌觶鷹緇機庫。4系統(tǒng)窗體界面設計21鶼漬螻偉閱劍鯫腎邏蘞。4.1設計原則21紂憂蔣氳頑薟驅藥憫騖。4.2界面詳細設計21穎芻莖蛺餑億頓裊賠瀧。5圖形繪制模塊設計25濫驂膽閉驟羥闈詔寢賻。5.1基類25銚銻縵嚌鰻鴻鋟謎諏涼。5.2點26擠貼綬電麥結鈺贖嘵類。5.3線段26賠荊紳諮侖驟遼輩襪錈。5.4矩形27塤礙籟饈決穩(wěn)賽釙冊庫。5.5正方形28裊樣祕廬廂顫諺鍘羋藺。5.6菱形28倉嫗盤紲囑瓏詁鍬齊驁。5.7圓29綻萬璉轆娛閬蟶鬮綰瀧。5.8任意三角形30驍顧燁鶚巰瀆蕪領鱺賻。5.9等腰三角形31瑣釙濺曖惲錕縞馭篩涼。5.10等邊三角形32鎦詩涇艷損樓紲鯗餳類。5.11直角三角形33櫛緶歐鋤棗鈕種鵑瑤錟。5.12帶外接圓的三角形34轡燁棟剛殮攬瑤麗鬮應。5.13任意多邊形36峴揚斕滾澗輻灄興渙藺。5.14文字38詩叁撻訥燼憂毀厲鋨驁。5.15曲線39則鯤愜韋瘓賈暉園棟瀧。5.16選取40脹鏝彈奧秘孫戶孿釔賻。6 2D函數圖形繪制模塊設計43鰓躋峽禱紉誦幫廢掃減。6.1實現原理43稟虛嬪賑維嚌妝擴踴糶。6.2公式分析器43陽簍埡鮭罷規(guī)嗚舊巋錟。6.3繪制圖形46溈氣嘮戇萇鑿鑿櫧諤應。7序列化模塊設計51鋇嵐縣緱虜榮產濤團藺。7.1序列化類型51懨俠劑鈍觸樂鷴燼觶騮。7.1.1 Shallow Serialization51謾飽兗爭詣繚鮐癩別瀘。7.1.2 Deep Serialization51咼鉉們歟謙鴣餃競蕩賺。7.2持久存儲52瑩諧齷蘄賞組靄縐嚴減。7.3按值封送52麩肅鵬鏇轎騍鐐縛縟糶。7.4基本序列化53納疇鰻吶鄖禎銣膩鰲錟。7.5選擇性序列化54風攆鮪貓鐵頻鈣薊糾廟。7.6自定義序列化55滅噯駭諗鋅獵輛覯餿藹。7.7序列化過程的步驟57鐒鸝餉飾鐔閌貲諢癱騮。7.8版本控制57攙閿頻嶸陣澇諗譴隴瀘。7.9序列化規(guī)則58趕輾雛紈顆鋝討躍滿賺。8結 論59夾覡閭輇駁檔驀遷錟減。參考文獻61視絀鏝鴯鱭鐘腦鈞欖糲。致 謝63偽澀錕攢鴛擋緬鐒鈞錠。1 引言1引言用GDI+開發(fā)一個2D幾何畫板,主要實現一些基本的圖形繪制,如點、線、圓的繪制,及一些自定義圖形的繪制,如多邊形,射線,直線的繪制;實現基本的測量,如角度的測量,長度的測量,跨度的測量等;實現直角坐標系函數軌跡圖形的繪制,要求為輸入一個函數表達式的字符串,然后自動繪制出相關的軌跡圖形;對繪制結果實現序列化,實現可以重復操作圖元;圖元的存儲、選取、修改,實現圖元的動態(tài)性,如選中對象時可以拖動,改變大小等。緦徑銚膾齲轎級鏜撟廟。- 65 -2 開發(fā)背景2開發(fā)背景2.1當代信息技術的發(fā)展現狀2.1.1當代信息技術的發(fā)展以網絡化、數字化、多媒化和智能化為代表的現代信息技術,正在改變人們傳統(tǒng)的生活、學習和工作方式,影響教育的內容與方法。騅憑鈳銘僥張礫陣軫藹。當代信息技術的發(fā)展,特別是以Internet為核心的網絡技術的發(fā)展和應用,使整個社會步入全新的網絡經濟時代,電子商務作為網絡經濟的重要載體,己經成為信息時代市場發(fā)展的一個重要標致,發(fā)展電子商務則成為當今世界商務活動的關鍵推動力,同時電子商務也是各類組織在結構,運營和管理方面發(fā)生根本變革的催化劑,使得企業(yè)之間的競爭規(guī)則和面臨的營銷環(huán)境增添了許多新內容,隨著電子商務技術的日趨完善和電子商務市場環(huán)境的日趨成熟,電子商務已經成為越來越多的企業(yè)和行業(yè)追求和向往的交易模式.癘騏鏨農剎貯獄顥幗騮。兩大信息技術成了一個從工業(yè)文明向信息時代過渡的重要的技術杠桿。計算機出現以后,還沒有帶來那么大的變化,到計算機發(fā)展到多媒體的時候才發(fā)生了質的變化。因為計算機僅僅是“計算機”的時候,所用的都是計算機語言,很難掌握。計算機發(fā)展到多媒體了,現在已經是超越了單純的計算機語言的時代。多媒體的出現就把文字、聲音、圖像、三維動畫全部變成數字信息,融為一體。多媒體全方位拓展人的觀感,是人的觀感的延伸,容易讓人掌握,所以到了多媒體時代。當多媒體技術成熟以后,掌握多媒體技術的人和多媒體計算機一起構成了信息時代的新細胞,信息社會的新細胞。鏃鋝過潤啟婭澗駱讕瀘。多媒體和信息高速公路以想象不到的驚人的速度在改變著我們的工作方式、交流方式、學習方式、思維方式、生活方式。榿貳軻謄壟該檻鯔塏賽。信息化的時代是世界發(fā)展的大趨勢。整個世界的發(fā)展趨勢就是:世界越來越步人信息時代,國家越來越走向國民經濟信息化。邁蔦賺陘賓唄擷鷦訟湊。2.1.2計算機處理能力的發(fā)展自1666年,在英國Samuel Morland發(fā)明了一部可以計算加數及減數的機械計數機,到1984年,日本計算機產業(yè)著手研制“第五代計算機”,計算機處理能力已經從簡單的機械計數變成人工智能。第五代計算機把信息采集、存儲、處理、通信和人工智能結合一起具有形式推理、聯想、學習和解釋能力。它的系統(tǒng)結構突破傳統(tǒng)的馮諾依曼機器的概念,實現高度的并行處理。嶁硤貪塒廩袞憫倉華糲。2.2 .NET框架的簡介2.2.1 .Net框架簡介.NET框架(Framework)是一個開發(fā)、部署和運行.NET應用的環(huán)境,包括了ASP.NET、公共語言運行時環(huán)境(CLR)以及.NET 框架類。.NET框架的目的是使Windows應用程序更加可靠并提供給應用程序更大程度的安全性,簡化Web應用程序和服務的開發(fā),提供獨立的一套庫,使其可用于多種語言。該櫟諼碼戇沖巋鳧薩錠。2.2.2 .Net框架的組成1、公共語言運行時此名稱不能準確反映它的全部功能。實際上,公共語言運行時在組件的開發(fā)及運行過程中,都扮演著非常重要的角色。在組件運行過程中,運行時負責管理內存分配、啟動或刪除線程和進程、實施安全性策略、同時滿足當前組件對其它組件的需求。在開發(fā)階段,運行時的作用有些變化,與現今的COM相比,運行時的自動化程度大為提高(比如可自動執(zhí)行內存管理),因而開發(fā)人員的工作變得非常輕松。尤其是,映射功能將銳減開發(fā)人員將業(yè)務邏輯程序轉化成可復用組件的代碼編寫量。對編程語言而言,運行時這個概念并不新奇,實際上每種編程語言都有自己的運行時。Visual Basic開發(fā)系統(tǒng)具有最為明顯的運行時(名為VBRUN),Visual C+跟Visual FoxPro、Jscript、SmallTalk、Perl、Python和Java一樣有一個運行時,即MSVCRT。.NET框架的關鍵作用在于,它提供了一個跨編程語言的統(tǒng)一編程環(huán)境,這也是它能獨樹一幟的根本原因。 2、統(tǒng)一的編程類劇妝諢貰攖蘋塒呂侖廟。.NET框架為開發(fā)人員提供了一個統(tǒng)一、面向對象、層次化、可擴展的類庫集(API)?,F今,C+開發(fā)人員使用的是Microsoft基類庫,Java開發(fā)人員使用的是Windows基類庫,而Visual Basic用戶使用的又是Visual Basic API集,這些都只是簡單的一用,而.NET框架就統(tǒng)一了微軟當前的各種不同類框架。這樣,開發(fā)人員無需學習多種框架就能順利編程。遠不止于此的是,通過創(chuàng)建跨編程語言的公共API集,.NET框架可實現跨語言繼承性、錯誤處理功能和調試功能。臠龍訛驄椏業(yè)變墊羅蘄。3、編程語言.NET框架提供了一套有助于創(chuàng)建使用.NET框架的代碼的工具,并且提供了可兼容.NET的語言,例如C#,VC+,BV.NET,Jscript.NET。 4、活動服務器頁面(ASP+)鰻順褸悅漚縫囅屜鴨騫。ASP+是使用.NET框架提供的編程類庫構建而成的,它提供了Web應用程序模型,該模型由一組控件和一個基本結構組成。有了它,Web應用程序的構建變得非常容易。開發(fā)人員可以直接使用ASP+控件集,該控件集封裝了公共的、用于超文本標識語言(HTML)用戶界面的各種小器件(諸如文本框、下拉菜單等等)。實際上,這些控件運行在 Web服務器上,它們將用戶界面轉換成HTML格式后再發(fā)送給瀏覽器。在服務器上,控件負責將面向對象的編程模型提供給Web開發(fā)人員,這種編程模型能提供面向對象編程技術的豐富功能。ASP+還提供一些基本結構服務(諸如會話狀態(tài)管理和進程重啟服務),這些服務大大減少了開發(fā)人員要編寫的代碼量,并使應用程序的可靠性得到大幅度提高。ASP+還允許開發(fā)人員將軟件作為一項服務來提供。通過使用ASP+ Web服務功能,ASP+開發(fā)人員只需進行簡單的業(yè)務邏輯編程,而由ASP+基本結構負責通過簡單對象訪問協議(SOAP)來提供服務。穡釓虛綹滟鰻絲懷紓濼。從層次結構來看,.NET框架又包括5個主要組成部分,通用語言運行環(huán)境、統(tǒng)一的基礎類庫、ADO.NET、ASP.NET和通用語言規(guī)范,如圖2.1所示。隸誆熒鑒獫綱鴣攣駘賽。圖2.1 .NET框架支持環(huán)境2.2.3.Net框架的特性1、公共語言運行時2、公共類型系統(tǒng).Net框架提供了一個公共的數據類型集合。例如,如果你引用了一個VB.NET、C#、J#、Delphi (.NET)、托管C+或其他任何一種.NET語言的字符串,公共類型系統(tǒng)能夠確保你所引用的字符串對這些不同的語言來說是完全相同的實體。這是因為string類型是在.NET框架本身中定義的數據類型,而不是在語言中定義的數據類型。讓數據類型的定義與編程語言分離,便能夠創(chuàng)建一個允許開發(fā)者采用VB.NET和C#語言混合編程,且不存在通信問題的編程環(huán)境。浹繢膩叢著駕驃構碭湊。3、IL(中間語言)通用中間語言(Common Intermediate Language,CIL)更常稱為IL,所有支持.NET框架的語言,在執(zhí)行前都需要通過兩次編譯。首次編譯是從源程序編譯為.NET平臺的PE格式文件(.exe或.dll),即要在CLR環(huán)境中執(zhí)行的受控代碼,它由中間語言IL和元數據組成。受控代碼在執(zhí)行時,需要有時編譯器再將中間語言代碼轉換為目標機器的本地碼才能運行。IL元數據和通用類型系統(tǒng)相結合,實現了真正的跨語言集會。鈀燭罰櫝箋礱颼畢韞糲。中間語言IL可以被看作是.NET框架上匯編語言,它是與CPU不相關的指令集。它包含有加載、存儲、初始化和調用對象方法的指令,同時它也有很多常用的指令,如算術運行、邏輯運算、流程控制、直接內存訪問和異常處理等指令。開發(fā)者可以直接用這些指令編寫代碼,然后通過工具ILasm.exe編譯成為PE格式文件,也可以通過工具ILasm.exe以文本方式來閱讀PE格式文件的IL代碼。愜執(zhí)緝蘿紳頎陽灣熗鍵。2.2.4 .Net的名字空間在.NET中,類型按照名字空間組織,一個名字空間是一個邏輯容器,它提供了數據類型的名字解析。.NET框架中的核心數據類型都屬于“System”名字空間。貞廈給鏌綞牽鎮(zhèn)獵鎦龐。System:此命名空間包含 .NET框架類庫中的其他所有命名空間。System還包含了CLR所使用的核心數據類型(core data types,也被其他基于CLR的語言所用)。這些類型包括數種不同的整數、一種字符串類型,以及其他。嚌鯖級廚脹鑲銦礦毀蘄。關于二維圖形的名字命名空間主要有以下幾個:System.Data:這個命名空間內的類型造就了ADO.NET。例如Connection類用于建立對數據庫管理系統(tǒng)(database management system,DBMS)的連接,DataSet類的實例則可用于緩存(cache)和檢視對DBMS執(zhí)行的查詢的結果。薊鑌豎牘熒浹醬籬鈴騫。System.Collections.Generic命名空間包含接口和類定義類的聚集使使用者能創(chuàng)建更強的類型集,并且提供更好的安全性。齡踐硯語蝸鑄轉絹攤濼。System.Text命名空間包含ASCII,Unicode, UTF-7, and UTF-8特性編碼有關的類,從字節(jié)塊轉換到特征塊的抽象基類型。紳藪瘡顴訝標販繯轅賽。System.Drawing命名空間提供了對 GDI+ 基本圖形功能的訪問。System.Collections命名空間包含了定義各種實體集的接口和類,例如目錄、行列、陣列、表格和字典。飪籮獰屬諾釙誣苧徑凜。System.Drawing.Drawing2D命名空間提供高級的二維和矢量圖形功能。2.2.5 .Net2.0平臺介紹以.NET Framework 2.0為基礎的Visual Studio 2005包括微軟5年來對.NET 1.0的所有修正。在1.0中還需花費大量時間編寫代碼的功能,在2.0幾乎不需要再寫代碼或者只需短短幾行代碼就可以完成。更重要的是,.NET Framework 2.0增添了的不少新類,同時相當多的類被重寫.烴斃潛籬賢擔視蠶賁粵。2.3 C簡介2.3.1什么是C#C#是一種簡單、現代、面向對象和類型安全的編程語言。C#起源于C語言家族,由C+發(fā)展而來,因此C、C+和JAVA的程序員可以很快熟悉這種新的語言。ECMA International 和ISO/IEC已對C#進行了標準化,分別是ECMA-334標準和ISO/IEC23270標準。Microsoft.NET框架的C#編譯器符合這兩個標準。鋝豈濤軌躍輪蒔講嫗鍵。C#是一種面向對象的語言,不過C#還進一步支持面對組件的程序設計?,F代軟件設計越來越以來于自包含和自描述功能包形式的軟件組件。這種組件的關鍵在于它們提供了使用屬性、方法、和事件的程序設計模型:它們具有提供關于組件的聲明信息的特性;同時,它們還加入了自己的文檔。C#提供了語言構件來直接支持這些概念,從而使C#在創(chuàng)建和使用軟件組件方面非常自然。擷偽氫鱧轍冪聹諛詼龐。C#的一些特性有助與創(chuàng)建健壯和穩(wěn)定的應用程序:垃圾回收可以自動回收無用對象所占用的內存;異常處理提供了一種結構化和可擴展的錯誤檢測及恢復方式;語言的類型安全設計可以防止引用末初始化變量、數組下標越界,以及執(zhí)行未檢查的類型轉換等情形的發(fā)生。蹤飯夢摻釣貞綾賁發(fā)蘄。C#具有一個統(tǒng)一的類型系統(tǒng)。所有的C#類型都繼承自單個根類型object。因此,所有類型都共有一組通用操作,并且任何類型的值都能夠以一致的方式進行存儲、傳遞和操作。此外,C#還支持用戶自定義的引用類型和值類型,既允許對象的動態(tài)分配,也允許輕量結構的內聯存儲。婭鑠機職銦夾簣軒蝕騫。為了保證C#程序和類庫總能以兼容的方式升級,在C#的設計中十分強調版本控制。許多程序設計語言不太重視這個問題,這導致了使用那些語言編寫的程序常常因為其所依賴的類庫的更新而無法工作。對版本控制的考慮直接影響了C#的設計,受影響的方面包括分開的virtual和override修飾符、方法重載的規(guī)則,以及對顯示接口成員聲明的支持等。譽諶摻鉺錠試監(jiān)鄺儕瀉。2.3.2 C#的特點1、簡單C#語言設計的首要目標就是簡單,這也正是C+的致命缺點。通過舍棄一小部分處理控制能力,增加諸如類型安全、自動垃圾收集等新特點,來最大限度地使語言最簡單。儔聹執(zhí)償閏號燴鈿膽賾。2、面向對象C#是一種完全面向對象的編程語言,所有的元素都要被封裝在類中,它支持所有面向對象語言的關鍵概念,包括封裝、繼承和多態(tài),但它不再支持類的多繼承,只允許但繼承,即一個類只能有一個父親。這是因為在多數情況下,只需要從一個類的多繼承,從多個基類派生的會帶來很多的問題。整個C#的類模型是建立在.NET虛擬對象系統(tǒng)基礎上的,其對象模型是.NET框架的一個組成部分,而不再是語言本身的組成部分。因此,用C#編寫的程序能夠最大程度的與.NET支持的其他語言相互操作,能夠實現跨語言的繼承。縝電悵淺靚蠐淺錒鵬凜。3、類型安全類型對于編程語言是非常重要的,C#實施了最嚴格類型安全機制,有效地增強了程序的可靠性。C#借鑒了很多Visual Basic語言中增強代碼執(zhí)行可靠性的特點,其中包括:所有動態(tài)分配的對象和數組都被初始化為0;雖然局部變量不會被自動初始化,但如果在程序中不初始化就使用,編譯器會發(fā)出警告;對數組的訪問,會自動進行邊界檢查;不能夠寫未分配的內存。驥擯幟褸饜兗椏長絳粵。4、版本控制C#提供了內置的版本支持,開發(fā)者可以使用它來確保開發(fā)的組件升級時,會與已有的系統(tǒng)保持二進制的兼容。5、靈活與兼容盡管C#代碼在默認時類型安全的,不能使用指針類型,但是在非安全代碼中,仍可以使用指針,并且調用這些非安全的代碼不會帶來任何問題。C#不是一個封閉的語言,它允許通過遵守.NET公用語言規(guī)范CLS訪問不同的API。癱噴導閽騁艷搗靨驄鍵。2.3.3 C#的語言特性1、類C#中所有代碼和數據都必須包含在類中。不能在類的外部定義變量,而且在類的外部不能編寫任何代碼。類可以擁有構造函數(constructor)和(destructor),前者在創(chuàng)建類的某個對象時執(zhí)行,后者在撤消類的某個對象時執(zhí)行。類支持單一繼承性,所有類最終都繼承自稱為object的基類。C#支持版本技術,這有助于在維護與類前期版本代碼的可兼容性的同時改進類的代碼。C#允許類組合到稱為名字空間的類的集合中。名字空間有它們各自的名稱。并且有助于將類的集合組合到邏輯分組中。鑣鴿奪圓鯢齙慫餞離龐。2、數據類型C#有兩種數據類型:值類型和引用類型。值類型的數據包含真正的值。引用類型的數據包含對存儲在內存中其他地方的值的引用?;绢愋投紝儆谥殿愋停热缱址愋停╟har)、整數類型(int)、浮點類型(float)、枚舉類型和結構類型。引用類型包含處理對象和數組的變量。C#有預定義的引用類型(對象object和字符串string),也有預定義的值類型。還可以在代碼中定義自己的值類型和引用類型。最終,所有值類型和引用類型都從稱為object的基類型派生而來。欖閾團皺鵬緦壽驏頦蘊。C#允許將一種類型的值轉換成另一種類型的值。既可以采用隱式轉換又可以采用顯示轉換。通常,隱式轉換會成功并且不會丟失任何信息,顯示轉換可能會導致丟失數據。要進行顯示轉換時,必須在代碼中寫出類型轉換運算符。遜輸吳貝義鰈國鳩猶騸。3、函數函數是可調用的代碼段,它可能返回也可能不返回值給最初調用它的代碼。通常,函數的代碼段會返回信息,而方法則不返回信息。C#和CLR結合使用可以提供自動內存管理。C#提供了各種運算符用于編寫數學表達式和逐位操作表達式。C#支持很多語句,這些語句允許在代碼中定義各種執(zhí)行分支。幘覘匱駭儺紅鹵齡鐮瀉。4、變量變量可以被定義為常量。常量的值在整個代碼執(zhí)行過程中不可以修改。C#為定義和處理事件提供了一種內置的機制。如果編寫了一個執(zhí)行一長串操作的類,可能會希望在操作完成時啟動某個事件。這時,客戶可以預約該事件并在代碼中捕獲該事件,這樣當完成很長的操作時,該事件會通知客戶。C#中的事件處理機制使用了委托,它們是引用某個函數的變量。誦終決懷區(qū)馱倆側澩賾。5、接口C#支持接口(interface),接口是指一套功能的屬性、方法和事件的組合。C#類可以實現接口,從而告訴用戶類支持接口中指定的功能,可以在不與任何現有代碼抵觸的情況下開發(fā)接口的實現,這樣將最低限度地減小可兼容性的問題。醫(yī)滌侶綃噲睞齒辦銩凜。6、屬性屬性向CLR聲明有關類的其他信息,它允許開發(fā)人員在類上綁定信息任何信息。例如,可以使用某個屬性在類中嵌入文檔編制信息。屬性還可以用于來中綁定運行時信息,定義使用時應該如何采取動作。艫當為遙頭韙鰭噦暈糞。2.4 GDI+簡介2.4.1什么是GDI+GDI+是Windows XP中的一個子系統(tǒng),它主要負責在顯示屏幕和打印設備輸出有關信息,它是一組通過C+類實現的應用程序編程接口(API,Application Programming Interface),通過這些API,GDI+讓程序員在設計程序時不必考慮到具體的顯示器或打印機,直接使用由GDI+提供的類的方法便可以在顯示器或打印機等輸出設備上進行圖形或文本的輸出,真正做到與設備無關。鴣湊鸛齏嶇燭罵獎選鋸。顧名思義,GDI+是以前版本GDI的繼承者,出于兼容性考慮,Windows XP仍然支持以前版本的GDI,但是在開發(fā)新應用程序的時候,開發(fā)人員為了滿足圖形輸出需要應該使用GDI+,因為GDI+對以前的Windows版本中GDI進行了優(yōu)化,并添加了許多新的功能。 筧驪鴨櫨懷鏇頤嶸悅廢。作為圖形設備接口的GDI+使得應用程序開發(fā)人員在輸出屏幕和打印機信息的時候無需考慮具體顯示設備的細節(jié),他們只需調用GDI+庫輸出的類的一些方法即可完成圖形操作,真正的繪圖工作由這些方法交給特定的設備驅動程序來完成。GDI+使得圖形硬件和應用程序相互隔離,從而使開發(fā)人員編寫設備無關的應用程序變得非常容易。韋鋯鯖榮擬滄閡懸贖蘊。2.4.2 GDI+的體系結構圖GDI+與GDI、Directx一樣,都是開發(fā)圖形應用程序的一種方式。GDI+實際就是GDI的高層次的一種封裝類,二著主要用來服務于圖形、圖象和文本的輸出。惟一不同的是,GDI+在功能上要強大些。另外,二者在編程應用上的本質區(qū)別是,GDI+用一個“無狀態(tài)模型”取代了GDI中把選中項目放到設備環(huán)境(DC,Device Context)對象上的“狀態(tài)模型”,在GDI+中每一個繪圖操作都是相互獨立的。圖形對象(Graphics object)是繪圖操作中惟一保留的對象。如圖2.2所示:濤貶騸錟晉鎩錈撳憲騸。圖2.2 GDI+體系結構2.4.3 GDI+的構成從GDI+所包含的內容來看,它主要由以下幾方面構成:1、二維幾何圖形的處理矢量圖形由圖元(如直線、曲線和輪廓等)組成,圖元由坐標中的一組點來指定。例如,一條直線可用兩個點來指定,一個矩形可用一個給出其左上角位置的點和一對給出其寬度、高度的數字來指定。一條簡單路徑可用由直線或曲線連接起來的一組點來指定。鈿蘇饌華檻榪鐵樣說瀉。GDI+的RECT(矩形)類用與存儲矩形的位置和尺寸;PEN類存儲線條顏色、線寬和線條風格的信息;Graphics類用于繪制直線、矩形及其他圖形;還有幾個Brush類存儲用顏色圖案來填充閉合圖形和路徑的方法。戧礱風熗澆鄖適濘嚀贗。2、顯示圖象 某些圖象難以或不可能使用矢量圖形技術來表示。例如,工具欄中的按扭圖標就很難使用直線和曲線的集合來表示。一幅包含一個擁擠的棒球場的高分辨率數字圖象更難用矢量技術來創(chuàng)建。這種類型的圖象一般都存儲為位圖,位圖是代表屏幕上單個點的顏色的數字陣列。用于存儲位圖信息的數據結構比用于存儲矢量圖形的數據結構更為復雜。所以在GDI+中就有幾個類用于處理這些復雜的位圖信息,CachedBitmap(緩存位圖)類就是一個例子,該類用于在內存中存儲位圖以便快速訪問與顯示位圖。購櫛頁詩燦戶踐瀾襯鳳。3、排版排版與使用各種各樣的字體、尺寸和風格顯示的文本有關。GDI+為這一復雜任務提供了大量的函數來完成各種不同風格的文本輸出。囁奐闃頜璦躑谫瓚獸糞。GDI+對文本的一個重要支持,就是文本的反鋸齒輸出,這也是GDI+的一個新特色,該特色使得在LCD屏幕上繪制文本時文本的外觀更加光滑。虛齬鐮寵確嶁誄禱艫鋸。2.4.4 GDI+的新特色與傳統(tǒng)的GDI相比,GDI+歸納起來有以下幾方面的新特色。1、漸變的畫刷(Gradient Brushes) 畫刷是用來填充控件、窗口和區(qū)域的一個GDI對象。原有的GDI僅支持單色的畫刷,如果想畫一個在陽光照耀下的矩形物體,通過GDI的畫刷則不能實現光線強弱的立體效果。GDI+畫刷改變了這一點,GDI+允許用戶創(chuàng)建一個沿路徑或直線漸變的畫刷,來填充外形(shapes),路徑(paths),區(qū)域(regions),漸變畫刷同樣也可以畫直線、曲線、路徑,當你用一個線形畫刷填充一個外形(shapes)時,顏色就能夠沿外形逐漸變化。與頂鍔筍類謾蠑紀黽廢。2、基數樣條函數(Cardinal Splines) GDI支持基數樣條函數,而GDI不支持?;鶖禈訔l是一組單個曲線按照一定的順序連接而成的一條較大曲線。樣條由一系列點指定,并通過每一個指定的點。由于基數樣條平滑地穿過組中的每一個點(不出現尖角),因而它比用直線連接創(chuàng)建的路徑更精確。結釋鏈蹌絞塒繭綻綹蘊。3、獨立的路徑對象(Path Objects)在GDI中,路徑屬于設備描述表(DC),在BeginPath函數和EndPath后便被新的路徑信息覆蓋,也就是說GDI的路徑信息是唯一并且不斷改變的。在GDI+中,繪圖工作由圖形對象(Graphics)來完成,并且可以創(chuàng)建多個圖形對象進行繪圖,多個圖形對象產生的路徑信息是相對獨立的,而且不會被新的繪圖操作所覆蓋。你可以創(chuàng)建幾個與Graphics分開的路徑對象,繪圖操作時路徑對象不被破環(huán),這樣你就可以多次使用同一個路徑對象畫路徑了。 餑詘鉈鯔縹評繒肅鮮驃。4、變形和矩陣對象(Transformations Matrix Object)GDI+提供了矩陣對象來使圖形在變形(旋轉及平移等)時做到簡單且效果平滑。矩形對象存儲了圖形在變化過程中的位置信息。使用矩形除了可以對坐標位置信息進行變換以外,還可以對色彩空間信息進行變換。在GDI+中通過矩陣運算,可以完成包含投射變換在內的所有仿射變換。一個矩陣對象總是和一個圖形變換對相聯系起來,比方說,路徑對象(PATH)有一個Transform方法,它的一個參數能夠接受矩陣對象的地址,每次路徑繪制時,它能夠根據變換矩陣繪制。爺纜鉅摯騰廁綁藎箋潑。5、Alpha通道合成運算(Alpha Blending)Alpha Blendings 是圖形處理中最常見的一種運算方法。在GDI+中,Alpha Blending不僅運用在圖片的合成方面,也體現在畫筆、畫刷與目標圖形區(qū)域之間的合成運算中,可以在兩幅圖片重疊顯示時,設置顯示圖片的透明度來合成圖片,真正做到透明。錁熾邐繒薩蝦竇補飆贗。6、多種圖像格式支持 圖像在圖形界面程序中占有舉足輕重的地位,GDI除了支持BMP等GDI支持的圖形格式外,還支持JPEG(Joint Photographic Experts Group)、GIF(Graphics Interchange Format)、PNG(Exchangeable Image File)、TIFF(Tag Image File Format)等圖像格式,你可以直接在程序中使用這些圖片文件,而無需考慮它們所用壓縮算法。 曠戧輔鑽襉倆瘋謅琿鳳。GDI+的所有新特色給程序員提供了一種簡潔的方法來完成在GDI中需要經過繁瑣的過程才能完成的編程工作。從某種意義上來說,GDI+是對使用GDI編程的程序員的一種解脫。轉厙蹺僉詘腳瀕諮閥糞。3 系統(tǒng)總體設計3系統(tǒng)總體設計3.1系統(tǒng)總體結構基于GDI+2D圖形軟件開發(fā)方法初探2D幾何畫板,主要模塊包括基本圖形繪制、自定義圖形繪制、測量、2D函數圖形繪制、序列化及系統(tǒng)功能模塊。嬤鯀賊灃謁麩溝賚淶鋸。繪制的主要圖形對象包括:點、線段、曲線、圓、矩形、正方形、菱形、任意三角形、等腰三角形、等邊三角形、直角三角形、帶外接圓的三角形、多邊形。訊鎬謾蟈賀綜樞輒鎖廩。系統(tǒng)總體結構和部署示意圖如圖3.1所示:線段、射線、直線、矩形、圓、點正方形、菱 形、三角形、多邊形、曲 線角度、長度、距離、直角坐標系里函數表達式的圖形生成基本圖形繪制模塊自定義圖形繪制模塊測量模塊2D函數圖形繪制模塊序列化模塊系統(tǒng)功能模塊基于GDI+2D軟件開發(fā)方法初探2D幾何畫板兒躉讀閌軒鯀擬釔標藪。圖3.1 系統(tǒng)總體結構和部署示意圖3.2系統(tǒng)模塊結構系統(tǒng)總體模塊結構描述如表3.1所示:表3.1系統(tǒng)總體模塊結構模塊名稱功能描述基本圖形繪制基本圖形的繪制,如點,線段,圓,矩形等自定義圖形繪制自定義圖形的繪制,如菱形,多邊形,帶外接圓的三角形測 量對相應對象進行測量,如長度,距離,角度2D函數圖形繪制繪制直角坐標系函數表達式的圖形,可分區(qū)間查看圖形特征序列化對繪制結果進行序列化,對對象可再編輯系統(tǒng)功能提供幫助,操作指南,工具欄,狀態(tài)欄等3.3系統(tǒng)類結構系統(tǒng)類結構如圖3.2所示圖3.2 系統(tǒng)類結構圖類詳細設計如圖3.3所示: (a)基類 (b)點 (c)圓 (d)矩形 (e)直線 (f)多邊形 (g)三角形 (h)直角三角形 (i)等邊三角形 (j)三角形(帶外接圓) (k)菱形 (l)等腰三角形 (m)標記文字 (n)曲線 (o)正方形圖3.3 類詳細設計3.4系統(tǒng)運行環(huán)境(1)運行環(huán)境:.NET Framework 2.0。(2)操作系統(tǒng):Windows98、Windows2000、WindowsXP及以上版本。(3)硬件要求:CPU:Pentium (及以上)、內存:256MB(建議512MB或以上)。3.5規(guī)格說明(1)顯示圖標規(guī)格即桌面顯示的圖標:30 * 30,單位像素。桌面圖標設計效果如圖3.4所示:圖3.4 桌面圖標(2)圖標規(guī)格即工具欄顯示的圖標:20 * 20,單位像素。工具欄圖標設計效果如圖3.5所示: (a)選取 (b)點 (c)直線 (d)矩形 (e)圓 (f)三角形 (g)標記文字 (e)自定義圖3.5 工具欄圖標在工具欄圖標中,右下角帶黑色小三角的,表示該圖標是同一類別圖形的集合,具體說明如表3.2所示:表3.2圖標說明 圖標名稱說 明選取選取點點直線直線、射線、線段、曲線矩形矩形、正方形、菱形圓圓三角形任意三角形、直角、等腰、等邊、三角形(帶外接圓)標記文字標記文字自定義六邊形、十二邊形、任意多邊形4 系統(tǒng)窗體界面設計4系統(tǒng)窗體界面設計圖形界面是人機交互的接口,提供了直觀,方便的操作。在界面設計中,應遵循美觀、舒適、操作方便、結構合理等要求??壧A詞嗇適籃異銅鑑驃。4.1設計原則在機算機軟件技術中,人機界面已經發(fā)展成為一個重要的分支?;贕DI+2D圖形軟件開發(fā)方法初探2D幾何畫板系統(tǒng)的人機界面設計一般遵循了以下的原則: 鮒簡觸癘鈄餒嬋鏘戶潑。(1)簡潔。(2)方便。(3)直觀。4.2界面詳細設計系統(tǒng)的登錄界面圖4.1所示:圖4.1 系統(tǒng)登錄界面登錄界面中顯示一些基本的信息。在設計中采用了界面透明技術,使得登錄界面更具視角沖擊。系統(tǒng)的主界面圖4.2所示:繪圖區(qū)快捷欄常用工具欄屬性面板系統(tǒng)狀態(tài)欄屬性控制區(qū)系統(tǒng)菜單欄圖4.2 系統(tǒng)主界面系統(tǒng)菜單欄設計如圖4.3所示:圖4.3 系統(tǒng)菜單欄系統(tǒng)菜單欄的詳細設計如圖4.4所示: 圖4.4 系統(tǒng)菜單欄的詳細設計系統(tǒng)快捷欄如圖4.5所示:圖4.5 系統(tǒng)快捷欄系統(tǒng)快捷欄提供了系統(tǒng)功能的快捷操作,可以方便的操作,提高了效率。常用工具欄如圖4.6所示:圖4.6 常用工具欄系統(tǒng)屬性控制區(qū)是對相應對象的相關屬性進行控制,如圓可以設置半徑,曲線可以設置張力,并實時的繪制出變化后的圖形。瞇毆蠐謝銀癩嘮閣蹺贗。系統(tǒng)屬性控制區(qū)如圖有4.7所示: 圖4.7 屬性控制區(qū)系統(tǒng)屬性面板是相關對象屬性的顯示區(qū)域,相關對象的屬性在屬性面板中實時的顯示出來。系統(tǒng)屬性面板如圖4.8所示:圖4.8 系統(tǒng)屬性面板系統(tǒng)狀態(tài)欄是系統(tǒng)相關狀態(tài)的顯示區(qū)域,如當前鼠標的坐標位置,當前文檔的路徑等信息。系統(tǒng)狀態(tài)欄如圖4.9所示:圖4.9 系統(tǒng)狀態(tài)欄繪圖區(qū)是系統(tǒng)核心區(qū)域,所有圖形的繪制都在此區(qū)域完成。繪圖區(qū)是圖形的繪制區(qū)域,可以繪制圖形并對圖形對象進行控制、修改、變更等操作。閔屢螢馳鑷雋劍頌崗鳳。直角坐標系二維函數圖形顯示界面如下:函數表達式錄入界面如圖4.10所示:圖4.10 二維函數表達式錄入界面函數表達式圖形顯示界面如力4.11所示:圖4.11 二維表達式圖形顯示界面5 圖形繪制模塊設計5圖形繪制模塊設計圖形繪制模塊主要負責系統(tǒng)基本圖形及自定義圖形的繪制,如點,線,圓,矩形,曲線,帶外接圓的三角形等?;诿嫦驅ο蟮脑O計思想,所有圖元對象都從一個基類派生,基類定義一些共有的屬性和方法,從它派生的類重寫基類的相應方法來實現各自特有的動作。 檁傷葦開閾燈傘饉諧糧。5.1基類在.NET中所有的對象都從Object派生,這也是面向對象思想的一種體現。基類從object對象派生,其實現如圖5.1所示:鄭餼腸絆頎鎦鷓鮞嚶錳。圖5.1 基類從object對象派生實現基類中相應方法的說明如表5.1所示:表5.1 基類方法說明方法名參數返回值功能HotPointGraphics,Point void繪制關鍵點AtPointPoint, Point bool判斷當前鼠標坐標是否落在關鍵點上AtLinePoint,Point, Pointbool判斷當前鼠標坐標是否落在線上PainGraphicsvirtual void由關鍵點繪制出相應的圖形SelectAtPointvirtual int判斷當前選中關鍵屬性MoveGraphics,int,Poinvirtual voi移動對象時發(fā)生的動作NewPointPointvirtual in新建對象時發(fā)生的動作AddPointPointvirtual int新增一個關鍵點HotPointsGraphicsvirtual void選中對象時繪制出其關鍵點drawFocus1Graphicsvirtual void當焦點落在關鍵點時響應的動作drawFocus0Graphicsvirtual void當焦點離開關鍵點時響應的動作5.2點點是基本的對象之一,它由一個坐標確
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅靖遠縣高三數學試卷
- 高校聯盟數學試卷
- 方城縣中學二模數學試卷
- 關于千克方面的數學試卷
- 2025年甘肅中醫(yī)藥大學招聘41人筆試歷年專業(yè)考點(難、易錯點)附帶答案詳解
- 2025至2030船體清潔機器人行業(yè)市場深度調研及前景趨勢與投資報告
- 贛州高考二模數學試卷
- 二年級畢業(yè)題數學試卷
- 高一集合數學試卷
- 體育賽事官方藝術家合作項目的社區(qū)參與度分析考核試卷
- 2022下半年四川公務員考試申論試題(行政執(zhí)法卷)
- 《金屬與石材幕墻工程技術規(guī)范》jgj1332001-2021112401384
- 海南省??谑?2024年-2025年小學四年級語文)人教版期末考試((上下)學期)試卷及答案
- 護理質量控制中心經費管理辦法
- MFP無機硅聲能凝膠施工方案
- GB/T 150.1-2024壓力容器第1部分:通用要求
- 籃球課程思政課程設計
- 2024年質量知識競賽考試題庫500題(含答案)
- 風電預收購協議書范本
- 2024年北京市中考數學真題試卷及答案
- TD/T 1056-2019 縣級國土資源調查生產成本定額(正式版)
評論
0/150
提交評論