《基于GDI》2D圖形軟件開(kāi)發(fā)方法初探-2D幾何畫(huà)板畢業(yè)論文.doc_第1頁(yè)
《基于GDI》2D圖形軟件開(kāi)發(fā)方法初探-2D幾何畫(huà)板畢業(yè)論文.doc_第2頁(yè)
《基于GDI》2D圖形軟件開(kāi)發(fā)方法初探-2D幾何畫(huà)板畢業(yè)論文.doc_第3頁(yè)
《基于GDI》2D圖形軟件開(kāi)發(fā)方法初探-2D幾何畫(huà)板畢業(yè)論文.doc_第4頁(yè)
《基于GDI》2D圖形軟件開(kāi)發(fā)方法初探-2D幾何畫(huà)板畢業(yè)論文.doc_第5頁(yè)
已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論