版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于gdi+2d圖形軟件開發(fā)方法初探2d幾何畫板摘要基于gdi2d圖形軟件開發(fā)方法初探2d幾何畫板,是采用microsoft visual c 2.0為開發(fā)語言,microsoft .net framework 2.0為支撐平臺開發(fā)的用于研究二維圖形的圖形軟件。2d幾何畫板的開發(fā),主要是研究gdi+技術(shù)在二維圖形軟件中的開發(fā)方法的探索。在該系統(tǒng)中,實現(xiàn)一些基本的圖形繪制,如點、線、圓的繪制,及一些自定義圖形的繪制,如多邊形,曲線,帶外接圓的三角形的繪制;實現(xiàn)基本的測量,如角度的測量,長度的測量,跨度的測量等;實現(xiàn)直角坐標(biāo)系函數(shù)軌跡圖形的繪制,要求為輸入一個函數(shù)表達(dá)式的字符串,然后自動繪制出相關(guān)
2、的軌跡圖形;對繪制結(jié)果實現(xiàn)序列化,實現(xiàn)可以重復(fù)操作圖元;圖元的存儲、選取、修改,實現(xiàn)圖元的動態(tài)性,如選中對象時可以拖動,改變大小等。2d幾何畫板除了實現(xiàn)基本的圖形的繪制外,還實現(xiàn)了共點運(yùn)動,可以動態(tài)的觀察二維空間中關(guān)聯(lián)對象的共點運(yùn)動,當(dāng)某個對象的相關(guān)屬性改變時,對其他關(guān)聯(lián)對象的影響;還可以精確的定位相關(guān)對象的相關(guān)屬性,如圓的半徑,曲線的張力等。本論文首先介紹了項目開發(fā)的背景,相關(guān)開發(fā)工具、開發(fā)語言和平臺的介紹,然后是系統(tǒng)的總體設(shè)計,系統(tǒng)的詳細(xì)設(shè)計,包括窗口界面,圖形繪制模塊,測量模塊,2d函數(shù)圖形繪制模塊,序列化模塊的設(shè)計。關(guān)鍵詞:面向?qū)ο?;命名空間;序列化;gdi+;圖元gdi+ based
3、 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 imag
4、ing 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, triang
5、les, 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è)論文(設(shè)計)原創(chuàng)性聲明本人所呈交的畢業(yè)論文(設(shè)計)是我在導(dǎo)師的指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我所知,除文中已經(jīng)注明引用的內(nèi)容外,本論文(設(shè)計)不包含其他個人已經(jīng)發(fā)表或撰寫過的
6、研究成果。對本論文(設(shè)計)的研究做出重要貢獻(xiàn)的個人和集體,均已在文中作了明確說明并表示謝意。 作者簽名: 日期: 畢業(yè)論文(設(shè)計)授權(quán)使用說明本論文(設(shè)計)作者完全了解*學(xué)院有關(guān)保留、使用畢業(yè)論文(設(shè)計)的規(guī)定,學(xué)校有權(quán)保留論文(設(shè)計)并向相關(guān)部門送交論文(設(shè)計)的電子版和紙質(zhì)版。有權(quán)將論文(設(shè)計)用于非贏利目的的少量復(fù)制并允許論文(設(shè)計)進(jìn)入學(xué)校圖書館被查閱。學(xué)??梢怨颊撐模ㄔO(shè)計)的全部或部分內(nèi)容。保密的論文(設(shè)計)在解密后適用本規(guī)定。 作者簽名: 指導(dǎo)教師簽名: 日期: 日期: 注 意 事 項1.設(shè)計(論文)的內(nèi)容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作)2)原創(chuàng)性聲明3)中文摘要
7、(300字左右)、關(guān)鍵詞4)外文摘要、關(guān)鍵詞 5)目次頁(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結(jié)論7)參考文獻(xiàn)8)致謝9)附錄(對論文支持必要時)2.論文字?jǐn)?shù)要求:理工類設(shè)計(論文)正文字?jǐn)?shù)不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于1.2萬字。3.附件包括:任務(wù)書、開題報告、外文譯文、譯文原文(復(fù)印件)。4.文字、圖表要求:1)文字通順,語言流暢,書寫字跡工整,打印字體及大小符合要求,無錯別字,不準(zhǔn)請他人代寫2)工程設(shè)計類題目的圖紙,要求部分用尺規(guī)繪制,部分用計算機(jī)繪制,所有圖紙應(yīng)符合國家技術(shù)標(biāo)準(zhǔn)規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不
8、準(zhǔn)用徒手畫3)畢業(yè)論文須用a4單面打印,論文50頁以上的雙面打印4)圖表應(yīng)繪制于無格子的頁面上5)軟件工程類課題應(yīng)有程序清單,并提供電子文檔5.裝訂順序1)設(shè)計(論文)2)附件:按照任務(wù)書、開題報告、外文譯文、譯文原文(復(fù)印件)次序裝訂3)其它目 錄1引言12開發(fā)背景32.1當(dāng)代信息技術(shù)的發(fā)展現(xiàn)狀32.1.1當(dāng)代信息技術(shù)的發(fā)展32.1.2計算機(jī)處理能力的發(fā)展32.2 .net框架的簡介42.2.1 .net框架簡介42.2.2 .net框架的組成42.2.3.net框架的特性52.2.4 .net的名字空間62.2.5 .net2.0平臺介紹72.3 c簡介72.3.1什么是c#72.3.2
9、c#的特點82.3.3 c#的語言特性92.4 gdi+簡介102.4.1什么是gdi+102.4.2 gdi+的體系結(jié)構(gòu)圖112.4.3 gdi+的構(gòu)成112.4.4 gdi+的新特色123系統(tǒng)總體設(shè)計153.1系統(tǒng)總體結(jié)構(gòu)153.2系統(tǒng)模塊結(jié)構(gòu)163.3系統(tǒng)類結(jié)構(gòu)163.4系統(tǒng)運(yùn)行環(huán)境193.5規(guī)格說明194系統(tǒng)窗體界面設(shè)計214.1設(shè)計原則214.2界面詳細(xì)設(shè)計215圖形繪制模塊設(shè)計255.1基類255.2點265.3線段265.4矩形275.5正方形285.6菱形285.7圓295.8任意三角形305.9等腰三角形315.10等邊三角形325.11直角三角形335.12帶外接圓的三角形
10、345.13任意多邊形365.14文字385.15曲線395.16選取406 2d函數(shù)圖形繪制模塊設(shè)計436.1實現(xiàn)原理436.2公式分析器436.3繪制圖形467序列化模塊設(shè)計517.1序列化類型517.1.1 shallow serialization517.1.2 deep serialization517.2持久存儲527.3按值封送527.4基本序列化537.5選擇性序列化547.6自定義序列化557.7序列化過程的步驟577.8版本控制577.9序列化規(guī)則588結(jié) 論59參考文獻(xiàn)61致 謝631引言用gdi+開發(fā)一個2d幾何畫板,主要實現(xiàn)一些基本的圖形繪制,如點、線、圓的繪制,及一
11、些自定義圖形的繪制,如多邊形,射線,直線的繪制;實現(xiàn)基本的測量,如角度的測量,長度的測量,跨度的測量等;實現(xiàn)直角坐標(biāo)系函數(shù)軌跡圖形的繪制,要求為輸入一個函數(shù)表達(dá)式的字符串,然后自動繪制出相關(guān)的軌跡圖形;對繪制結(jié)果實現(xiàn)序列化,實現(xiàn)可以重復(fù)操作圖元;圖元的存儲、選取、修改,實現(xiàn)圖元的動態(tài)性,如選中對象時可以拖動,改變大小等。2開發(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)用,使整個社會步入全新的網(wǎng)
12、絡(luò)經(jīng)濟(jì)時代,電子商務(wù)作為網(wǎng)絡(luò)經(jīng)濟(jì)的重要載體,己經(jīng)成為信息時代市場發(fā)展的一個重要標(biāo)致,發(fā)展電子商務(wù)則成為當(dāng)今世界商務(wù)活動的關(guān)鍵推動力,同時電子商務(wù)也是各類組織在結(jié)構(gòu),運(yùn)營和管理方面發(fā)生根本變革的催化劑,使得企業(yè)之間的競爭規(guī)則和面臨的營銷環(huán)境增添了許多新內(nèi)容,隨著電子商務(wù)技術(shù)的日趨完善和電子商務(wù)市場環(huán)境的日趨成熟,電子商務(wù)已經(jīng)成為越來越多的企業(yè)和行業(yè)追求和向往的交易模式.兩大信息技術(shù)成了一個從工業(yè)文明向信息時代過渡的重要的技術(shù)杠桿。計算機(jī)出現(xiàn)以后,還沒有帶來那么大的變化,到計算機(jī)發(fā)展到多媒體的時候才發(fā)生了質(zhì)的變化。因為計算機(jī)僅僅是“計算機(jī)”的時候,所用的都是計算機(jī)語言,很難掌握。計算機(jī)發(fā)展到多媒體
13、了,現(xiàn)在已經(jīng)是超越了單純的計算機(jī)語言的時代。多媒體的出現(xiàn)就把文字、聲音、圖像、三維動畫全部變成數(shù)字信息,融為一體。多媒體全方位拓展人的觀感,是人的觀感的延伸,容易讓人掌握,所以到了多媒體時代。當(dāng)多媒體技術(shù)成熟以后,掌握多媒體技術(shù)的人和多媒體計算機(jī)一起構(gòu)成了信息時代的新細(xì)胞,信息社會的新細(xì)胞。多媒體和信息高速公路以想象不到的驚人的速度在改變著我們的工作方式、交流方式、學(xué)習(xí)方式、思維方式、生活方式。信息化的時代是世界發(fā)展的大趨勢。整個世界的發(fā)展趨勢就是:世界越來越步人信息時代,國家越來越走向國民經(jīng)濟(jì)信息化。2.1.2計算機(jī)處理能力的發(fā)展自1666年,在英國samuel morland發(fā)明了一部可以
14、計算加數(shù)及減數(shù)的機(jī)械計數(shù)機(jī),到1984年,日本計算機(jī)產(chǎn)業(yè)著手研制“第五代計算機(jī)”,計算機(jī)處理能力已經(jīng)從簡單的機(jī)械計數(shù)變成人工智能。第五代計算機(jī)把信息采集、存儲、處理、通信和人工智能結(jié)合一起具有形式推理、聯(lián)想、學(xué)習(xí)和解釋能力。它的系統(tǒng)結(jié)構(gòu)突破傳統(tǒng)的馮諾依曼機(jī)器的概念,實現(xiàn)高度的并行處理。2.2 .net框架的簡介2.2.1 .net框架簡介.net框架(framework)是一個開發(fā)、部署和運(yùn)行.net應(yīng)用的環(huán)境,包括了asp.net、公共語言運(yùn)行時環(huán)境(clr)以及.net 框架類。.net框架的目的是使windows應(yīng)用程序更加可靠并提供給應(yīng)用程序更大程度的安全性,簡化web應(yīng)用程序和服務(wù)的
15、開發(fā),提供獨立的一套庫,使其可用于多種語言。2.2.2 .net框架的組成1、公共語言運(yùn)行時此名稱不能準(zhǔn)確反映它的全部功能。實際上,公共語言運(yùn)行時在組件的開發(fā)及運(yùn)行過程中,都扮演著非常重要的角色。在組件運(yùn)行過程中,運(yùn)行時負(fù)責(zé)管理內(nèi)存分配、啟動或刪除線程和進(jìn)程、實施安全性策略、同時滿足當(dāng)前組件對其它組件的需求。在開發(fā)階段,運(yùn)行時的作用有些變化,與現(xiàn)今的com相比,運(yùn)行時的自動化程度大為提高(比如可自動執(zhí)行內(nèi)存管理),因而開發(fā)人員的工作變得非常輕松。尤其是,映射功能將銳減開發(fā)人員將業(yè)務(wù)邏輯程序轉(zhuǎn)化成可復(fù)用組件的代碼編寫量。對編程語言而言,運(yùn)行時這個概念并不新奇,實際上每種編程語言都有自己的運(yùn)行時。
16、visual basic開發(fā)系統(tǒng)具有最為明顯的運(yùn)行時(名為vbrun),visual c+跟visual foxpro、jscript、smalltalk、perl、python和java一樣有一個運(yùn)行時,即msvcrt。.net框架的關(guān)鍵作用在于,它提供了一個跨編程語言的統(tǒng)一編程環(huán)境,這也是它能獨樹一幟的根本原因。 2、統(tǒng)一的編程類.net框架為開發(fā)人員提供了一個統(tǒng)一、面向?qū)ο?、層次化、可擴(kuò)展的類庫集(api)。現(xiàn)今,c+開發(fā)人員使用的是microsoft基類庫,java開發(fā)人員使用的是windows基類庫,而visual basic用戶使用的又是visual basic api集,這些都只
17、是簡單的一用,而.net框架就統(tǒng)一了微軟當(dāng)前的各種不同類框架。這樣,開發(fā)人員無需學(xué)習(xí)多種框架就能順利編程。遠(yuǎn)不止于此的是,通過創(chuàng)建跨編程語言的公共api集,.net框架可實現(xiàn)跨語言繼承性、錯誤處理功能和調(diào)試功能。3、編程語言.net框架提供了一套有助于創(chuàng)建使用.net框架的代碼的工具,并且提供了可兼容.net的語言,例如c#,vc+,bv.net,jscript.net。 4、活動服務(wù)器頁面(asp+)asp+是使用.net框架提供的編程類庫構(gòu)建而成的,它提供了web應(yīng)用程序模型,該模型由一組控件和一個基本結(jié)構(gòu)組成。有了它,web應(yīng)用程序的構(gòu)建變得非常容易。開發(fā)人員可以直接使用asp+控件集,
18、該控件集封裝了公共的、用于超文本標(biāo)識語言(html)用戶界面的各種小器件(諸如文本框、下拉菜單等等)。實際上,這些控件運(yùn)行在 web服務(wù)器上,它們將用戶界面轉(zhuǎn)換成html格式后再發(fā)送給瀏覽器。在服務(wù)器上,控件負(fù)責(zé)將面向?qū)ο蟮木幊棠P吞峁┙oweb開發(fā)人員,這種編程模型能提供面向?qū)ο缶幊碳夹g(shù)的豐富功能。asp+還提供一些基本結(jié)構(gòu)服務(wù)(諸如會話狀態(tài)管理和進(jìn)程重啟服務(wù)),這些服務(wù)大大減少了開發(fā)人員要編寫的代碼量,并使應(yīng)用程序的可靠性得到大幅度提高。asp+還允許開發(fā)人員將軟件作為一項服務(wù)來提供。通過使用asp+ web服務(wù)功能,asp+開發(fā)人員只需進(jìn)行簡單的業(yè)務(wù)邏輯編程,而由asp+基本結(jié)構(gòu)負(fù)責(zé)通過簡
19、單對象訪問協(xié)議(soap)來提供服務(wù)。從層次結(jié)構(gòu)來看,.net框架又包括5個主要組成部分,通用語言運(yùn)行環(huán)境、統(tǒng)一的基礎(chǔ)類庫、ado.net、asp.net和通用語言規(guī)范,如圖2.1所示。圖2.1 .net框架支持環(huán)境2.2.3.net框架的特性1、公共語言運(yùn)行時2、公共類型系統(tǒng).net框架提供了一個公共的數(shù)據(jù)類型集合。例如,如果你引用了一個vb.net、c#、j#、delphi (.net)、托管c+或其他任何一種.net語言的字符串,公共類型系統(tǒng)能夠確保你所引用的字符串對這些不同的語言來說是完全相同的實體。這是因為string類型是在.net框架本身中定義的數(shù)據(jù)類型,而不是在語言中定義的數(shù)據(jù)
20、類型。讓數(shù)據(jù)類型的定義與編程語言分離,便能夠創(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和元數(shù)據(jù)組成。受控代碼在執(zhí)行時,需要有時編譯器再將中間語言代碼轉(zhuǎn)換為目標(biāo)機(jī)器的本地碼才能運(yùn)行。il元數(shù)據(jù)和通用類型系統(tǒng)相結(jié)合,實現(xiàn)了真正的跨語言集會。中間語言il可以被看作是.ne
21、t框架上匯編語言,它是與cpu不相關(guān)的指令集。它包含有加載、存儲、初始化和調(diào)用對象方法的指令,同時它也有很多常用的指令,如算術(shù)運(yùn)行、邏輯運(yùn)算、流程控制、直接內(nèi)存訪問和異常處理等指令。開發(fā)者可以直接用這些指令編寫代碼,然后通過工具ilasm.exe編譯成為pe格式文件,也可以通過工具ilasm.exe以文本方式來閱讀pe格式文件的il代碼。2.2.4 .net的名字空間在.net中,類型按照名字空間組織,一個名字空間是一個邏輯容器,它提供了數(shù)據(jù)類型的名字解析。.net框架中的核心數(shù)據(jù)類型都屬于“system”名字空間。system:此命名空間包含 .net框架類庫中的其他所有命名空間。syste
22、m還包含了clr所使用的核心數(shù)據(jù)類型(core data types,也被其他基于clr的語言所用)。這些類型包括數(shù)種不同的整數(shù)、一種字符串類型,以及其他。關(guān)于二維圖形的名字命名空間主要有以下幾個:system.data:這個命名空間內(nèi)的類型造就了ado.net。例如connection類用于建立對數(shù)據(jù)庫管理系統(tǒng)(database management system,dbms)的連接,dataset類的實例則可用于緩存(cache)和檢視對dbms執(zhí)行的查詢的結(jié)果。system.collections.generic命名空間包含接口和類定義類的聚集使使用者能創(chuàng)建更強(qiáng)的類型集,并且提供更好的安全
23、性。system.text命名空間包含ascii,unicode, utf-7, and utf-8特性編碼有關(guān)的類,從字節(jié)塊轉(zhuǎn)換到特征塊的抽象基類型。system.drawing命名空間提供了對 gdi+ 基本圖形功能的訪問。system.collections命名空間包含了定義各種實體集的接口和類,例如目錄、行列、陣列、表格和字典。system.drawing.drawing2d命名空間提供高級的二維和矢量圖形功能。2.2.5 .net2.0平臺介紹以.net framework 2.0為基礎(chǔ)的visual studio 2005包括微軟5年來對.net 1.0的所有修正。在1.0中還需花
24、費(fèi)大量時間編寫代碼的功能,在2.0幾乎不需要再寫代碼或者只需短短幾行代碼就可以完成。更重要的是,.net framework 2.0增添了的不少新類,同時相當(dāng)多的類被重寫.2.3 c簡介2.3.1什么是c#c#是一種簡單、現(xiàn)代、面向?qū)ο蠛皖愋桶踩木幊陶Z言。c#起源于c語言家族,由c+發(fā)展而來,因此c、c+和java的程序員可以很快熟悉這種新的語言。ecma international 和iso/iec已對c#進(jìn)行了標(biāo)準(zhǔn)化,分別是ecma-334標(biāo)準(zhǔn)和iso/iec23270標(biāo)準(zhǔn)。microsoft.net框架的c#編譯器符合這兩個標(biāo)準(zhǔn)。c#是一種面向?qū)ο蟮恼Z言,不過c#還進(jìn)一步支持面對組件的
25、程序設(shè)計?,F(xiàn)代軟件設(shè)計越來越以來于自包含和自描述功能包形式的軟件組件。這種組件的關(guān)鍵在于它們提供了使用屬性、方法、和事件的程序設(shè)計模型:它們具有提供關(guān)于組件的聲明信息的特性;同時,它們還加入了自己的文檔。c#提供了語言構(gòu)件來直接支持這些概念,從而使c#在創(chuàng)建和使用軟件組件方面非常自然。c#的一些特性有助與創(chuàng)建健壯和穩(wěn)定的應(yīng)用程序:垃圾回收可以自動回收無用對象所占用的內(nèi)存;異常處理提供了一種結(jié)構(gòu)化和可擴(kuò)展的錯誤檢測及恢復(fù)方式;語言的類型安全設(shè)計可以防止引用末初始化變量、數(shù)組下標(biāo)越界,以及執(zhí)行未檢查的類型轉(zhuǎn)換等情形的發(fā)生。c#具有一個統(tǒng)一的類型系統(tǒng)。所有的c#類型都繼承自單個根類型object。因
26、此,所有類型都共有一組通用操作,并且任何類型的值都能夠以一致的方式進(jìn)行存儲、傳遞和操作。此外,c#還支持用戶自定義的引用類型和值類型,既允許對象的動態(tài)分配,也允許輕量結(jié)構(gòu)的內(nèi)聯(lián)存儲。為了保證c#程序和類庫總能以兼容的方式升級,在c#的設(shè)計中十分強(qiáng)調(diào)版本控制。許多程序設(shè)計語言不太重視這個問題,這導(dǎo)致了使用那些語言編寫的程序常常因為其所依賴的類庫的更新而無法工作。對版本控制的考慮直接影響了c#的設(shè)計,受影響的方面包括分開的virtual和override修飾符、方法重載的規(guī)則,以及對顯示接口成員聲明的支持等。2.3.2 c#的特點1、簡單c#語言設(shè)計的首要目標(biāo)就是簡單,這也正是c+的致命缺點。通過
27、舍棄一小部分處理控制能力,增加諸如類型安全、自動垃圾收集等新特點,來最大限度地使語言最簡單。2、面向?qū)ο骳#是一種完全面向?qū)ο蟮木幊陶Z言,所有的元素都要被封裝在類中,它支持所有面向?qū)ο笳Z言的關(guān)鍵概念,包括封裝、繼承和多態(tài),但它不再支持類的多繼承,只允許但繼承,即一個類只能有一個父親。這是因為在多數(shù)情況下,只需要從一個類的多繼承,從多個基類派生的會帶來很多的問題。整個c#的類模型是建立在.net虛擬對象系統(tǒng)基礎(chǔ)上的,其對象模型是.net框架的一個組成部分,而不再是語言本身的組成部分。因此,用c#編寫的程序能夠最大程度的與.net支持的其他語言相互操作,能夠?qū)崿F(xiàn)跨語言的繼承。3、類型安全類型對于編
28、程語言是非常重要的,c#實施了最嚴(yán)格類型安全機(jī)制,有效地增強(qiáng)了程序的可靠性。c#借鑒了很多visual basic語言中增強(qiáng)代碼執(zhí)行可靠性的特點,其中包括:所有動態(tài)分配的對象和數(shù)組都被初始化為0;雖然局部變量不會被自動初始化,但如果在程序中不初始化就使用,編譯器會發(fā)出警告;對數(shù)組的訪問,會自動進(jìn)行邊界檢查;不能夠?qū)懳捶峙涞膬?nèi)存。4、版本控制c#提供了內(nèi)置的版本支持,開發(fā)者可以使用它來確保開發(fā)的組件升級時,會與已有的系統(tǒng)保持二進(jìn)制的兼容。5、靈活與兼容盡管c#代碼在默認(rèn)時類型安全的,不能使用指針類型,但是在非安全代碼中,仍可以使用指針,并且調(diào)用這些非安全的代碼不會帶來任何問題。c#不是一個封閉的
29、語言,它允許通過遵守.net公用語言規(guī)范cls訪問不同的api。2.3.3 c#的語言特性1、類c#中所有代碼和數(shù)據(jù)都必須包含在類中。不能在類的外部定義變量,而且在類的外部不能編寫任何代碼。類可以擁有構(gòu)造函數(shù)(constructor)和(destructor),前者在創(chuàng)建類的某個對象時執(zhí)行,后者在撤消類的某個對象時執(zhí)行。類支持單一繼承性,所有類最終都繼承自稱為object的基類。c#支持版本技術(shù),這有助于在維護(hù)與類前期版本代碼的可兼容性的同時改進(jìn)類的代碼。c#允許類組合到稱為名字空間的類的集合中。名字空間有它們各自的名稱。并且有助于將類的集合組合到邏輯分組中。2、數(shù)據(jù)類型c#有兩種數(shù)據(jù)類型:值
30、類型和引用類型。值類型的數(shù)據(jù)包含真正的值。引用類型的數(shù)據(jù)包含對存儲在內(nèi)存中其他地方的值的引用。基本類型都屬于值類型,比如字符類型(char)、整數(shù)類型(int)、浮點類型(float)、枚舉類型和結(jié)構(gòu)類型。引用類型包含處理對象和數(shù)組的變量。c#有預(yù)定義的引用類型(對象object和字符串string),也有預(yù)定義的值類型。還可以在代碼中定義自己的值類型和引用類型。最終,所有值類型和引用類型都從稱為object的基類型派生而來。c#允許將一種類型的值轉(zhuǎn)換成另一種類型的值。既可以采用隱式轉(zhuǎn)換又可以采用顯示轉(zhuǎn)換。通常,隱式轉(zhuǎn)換會成功并且不會丟失任何信息,顯示轉(zhuǎn)換可能會導(dǎo)致丟失數(shù)據(jù)。要進(jìn)行顯示轉(zhuǎn)換時,
31、必須在代碼中寫出類型轉(zhuǎn)換運(yùn)算符。3、函數(shù)函數(shù)是可調(diào)用的代碼段,它可能返回也可能不返回值給最初調(diào)用它的代碼。通常,函數(shù)的代碼段會返回信息,而方法則不返回信息。c#和clr結(jié)合使用可以提供自動內(nèi)存管理。c#提供了各種運(yùn)算符用于編寫數(shù)學(xué)表達(dá)式和逐位操作表達(dá)式。c#支持很多語句,這些語句允許在代碼中定義各種執(zhí)行分支。4、變量變量可以被定義為常量。常量的值在整個代碼執(zhí)行過程中不可以修改。c#為定義和處理事件提供了一種內(nèi)置的機(jī)制。如果編寫了一個執(zhí)行一長串操作的類,可能會希望在操作完成時啟動某個事件。這時,客戶可以預(yù)約該事件并在代碼中捕獲該事件,這樣當(dāng)完成很長的操作時,該事件會通知客戶。c#中的事件處理機(jī)制
32、使用了委托,它們是引用某個函數(shù)的變量。5、接口c#支持接口(interface),接口是指一套功能的屬性、方法和事件的組合。c#類可以實現(xiàn)接口,從而告訴用戶類支持接口中指定的功能,可以在不與任何現(xiàn)有代碼抵觸的情況下開發(fā)接口的實現(xiàn),這樣將最低限度地減小可兼容性的問題。6、屬性屬性向clr聲明有關(guān)類的其他信息,它允許開發(fā)人員在類上綁定信息任何信息。例如,可以使用某個屬性在類中嵌入文檔編制信息。屬性還可以用于來中綁定運(yùn)行時信息,定義使用時應(yīng)該如何采取動作。2.4 gdi+簡介2.4.1什么是gdi+gdi+是windows xp中的一個子系統(tǒng),它主要負(fù)責(zé)在顯示屏幕和打印設(shè)備輸出有關(guān)信息,它是一組通過
33、c+類實現(xiàn)的應(yīng)用程序編程接口(api,application programming interface),通過這些api,gdi+讓程序員在設(shè)計程序時不必考慮到具體的顯示器或打印機(jī),直接使用由gdi+提供的類的方法便可以在顯示器或打印機(jī)等輸出設(shè)備上進(jìn)行圖形或文本的輸出,真正做到與設(shè)備無關(guān)。顧名思義,gdi+是以前版本gdi的繼承者,出于兼容性考慮,windows xp仍然支持以前版本的gdi,但是在開發(fā)新應(yīng)用程序的時候,開發(fā)人員為了滿足圖形輸出需要應(yīng)該使用gdi+,因為gdi+對以前的windows版本中g(shù)di進(jìn)行了優(yōu)化,并添加了許多新的功能。 作為圖形設(shè)備接口的gdi+使得應(yīng)用程序開發(fā)人員
34、在輸出屏幕和打印機(jī)信息的時候無需考慮具體顯示設(shè)備的細(xì)節(jié),他們只需調(diào)用gdi+庫輸出的類的一些方法即可完成圖形操作,真正的繪圖工作由這些方法交給特定的設(shè)備驅(qū)動程序來完成。gdi+使得圖形硬件和應(yīng)用程序相互隔離,從而使開發(fā)人員編寫設(shè)備無關(guān)的應(yīng)用程序變得非常容易。2.4.2 gdi+的體系結(jié)構(gòu)圖gdi+與gdi、directx一樣,都是開發(fā)圖形應(yīng)用程序的一種方式。gdi+實際就是gdi的高層次的一種封裝類,二著主要用來服務(wù)于圖形、圖象和文本的輸出。惟一不同的是,gdi+在功能上要強(qiáng)大些。另外,二者在編程應(yīng)用上的本質(zhì)區(qū)別是,gdi+用一個“無狀態(tài)模型”取代了gdi中把選中項目放到設(shè)備環(huán)境(dc,dev
35、ice context)對象上的“狀態(tài)模型”,在gdi+中每一個繪圖操作都是相互獨立的。圖形對象(graphics object)是繪圖操作中惟一保留的對象。如圖2.2所示:圖2.2 gdi+體系結(jié)構(gòu)2.4.3 gdi+的構(gòu)成從gdi+所包含的內(nèi)容來看,它主要由以下幾方面構(gòu)成:1、二維幾何圖形的處理矢量圖形由圖元(如直線、曲線和輪廓等)組成,圖元由坐標(biāo)中的一組點來指定。例如,一條直線可用兩個點來指定,一個矩形可用一個給出其左上角位置的點和一對給出其寬度、高度的數(shù)字來指定。一條簡單路徑可用由直線或曲線連接起來的一組點來指定。gdi+的rect(矩形)類用與存儲矩形的位置和尺寸;pen類存儲線條顏
36、色、線寬和線條風(fēng)格的信息;graphics類用于繪制直線、矩形及其他圖形;還有幾個brush類存儲用顏色圖案來填充閉合圖形和路徑的方法。2、顯示圖象 某些圖象難以或不可能使用矢量圖形技術(shù)來表示。例如,工具欄中的按扭圖標(biāo)就很難使用直線和曲線的集合來表示。一幅包含一個擁擠的棒球場的高分辨率數(shù)字圖象更難用矢量技術(shù)來創(chuàng)建。這種類型的圖象一般都存儲為位圖,位圖是代表屏幕上單個點的顏色的數(shù)字陣列。用于存儲位圖信息的數(shù)據(jù)結(jié)構(gòu)比用于存儲矢量圖形的數(shù)據(jù)結(jié)構(gòu)更為復(fù)雜。所以在gdi+中就有幾個類用于處理這些復(fù)雜的位圖信息,cachedbitmap(緩存位圖)類就是一個例子,該類用于在內(nèi)存中存儲位圖以便快速訪問與顯示
37、位圖。3、排版排版與使用各種各樣的字體、尺寸和風(fēng)格顯示的文本有關(guān)。gdi+為這一復(fù)雜任務(wù)提供了大量的函數(shù)來完成各種不同風(fēng)格的文本輸出。gdi+對文本的一個重要支持,就是文本的反鋸齒輸出,這也是gdi+的一個新特色,該特色使得在lcd屏幕上繪制文本時文本的外觀更加光滑。2.4.4 gdi+的新特色與傳統(tǒng)的gdi相比,gdi+歸納起來有以下幾方面的新特色。1、漸變的畫刷(gradient brushes) 畫刷是用來填充控件、窗口和區(qū)域的一個gdi對象。原有的gdi僅支持單色的畫刷,如果想畫一個在陽光照耀下的矩形物體,通過gdi的畫刷則不能實現(xiàn)光線強(qiáng)弱的立體效果。gdi+畫刷改變了這一點,gdi+
38、允許用戶創(chuàng)建一個沿路徑或直線漸變的畫刷,來填充外形(shapes),路徑(paths),區(qū)域(regions),漸變畫刷同樣也可以畫直線、曲線、路徑,當(dāng)你用一個線形畫刷填充一個外形(shapes)時,顏色就能夠沿外形逐漸變化。2、基數(shù)樣條函數(shù)(cardinal splines) gdi支持基數(shù)樣條函數(shù),而gdi不支持?;鶖?shù)樣條是一組單個曲線按照一定的順序連接而成的一條較大曲線。樣條由一系列點指定,并通過每一個指定的點。由于基數(shù)樣條平滑地穿過組中的每一個點(不出現(xiàn)尖角),因而它比用直線連接創(chuàng)建的路徑更精確。3、獨立的路徑對象(path objects)在gdi中,路徑屬于設(shè)備描述表(dc),在b
39、eginpath函數(shù)和endpath后便被新的路徑信息覆蓋,也就是說gdi的路徑信息是唯一并且不斷改變的。在gdi+中,繪圖工作由圖形對象(graphics)來完成,并且可以創(chuàng)建多個圖形對象進(jìn)行繪圖,多個圖形對象產(chǎn)生的路徑信息是相對獨立的,而且不會被新的繪圖操作所覆蓋。你可以創(chuàng)建幾個與graphics分開的路徑對象,繪圖操作時路徑對象不被破環(huán),這樣你就可以多次使用同一個路徑對象畫路徑了。 4、變形和矩陣對象(transformations matrix object)gdi+提供了矩陣對象來使圖形在變形(旋轉(zhuǎn)及平移等)時做到簡單且效果平滑。矩形對象存儲了圖形在變化過程中的位置信息。使用矩形除了
40、可以對坐標(biāo)位置信息進(jìn)行變換以外,還可以對色彩空間信息進(jìn)行變換。在gdi+中通過矩陣運(yùn)算,可以完成包含投射變換在內(nèi)的所有仿射變換。一個矩陣對象總是和一個圖形變換對相聯(lián)系起來,比方說,路徑對象(path)有一個transform方法,它的一個參數(shù)能夠接受矩陣對象的地址,每次路徑繪制時,它能夠根據(jù)變換矩陣?yán)L制。5、alpha通道合成運(yùn)算(alpha blending)alpha blendings 是圖形處理中最常見的一種運(yùn)算方法。在gdi+中,alpha blending不僅運(yùn)用在圖片的合成方面,也體現(xiàn)在畫筆、畫刷與目標(biāo)圖形區(qū)域之間的合成運(yùn)算中,可以在兩幅圖片重疊顯示時,設(shè)置顯示圖片的透明度來合成
41、圖片,真正做到透明。6、多種圖像格式支持 圖像在圖形界面程序中占有舉足輕重的地位,gdi除了支持bmp等gdi支持的圖形格式外,還支持jpeg(joint photographic experts group)、gif(graphics interchange format)、png(exchangeable image file)、tiff(tag image file format)等圖像格式,你可以直接在程序中使用這些圖片文件,而無需考慮它們所用壓縮算法。 gdi+的所有新特色給程序員提供了一種簡潔的方法來完成在gdi中需要經(jīng)過繁瑣的過程才能完成的編程工作。從某種意義上來說,gdi+是對
42、使用gdi編程的程序員的一種解脫。3系統(tǒng)總體設(shè)計3.1系統(tǒng)總體結(jié)構(gòu)基于gdi+2d圖形軟件開發(fā)方法初探2d幾何畫板,主要模塊包括基本圖形繪制、自定義圖形繪制、測量、2d函數(shù)圖形繪制、序列化及系統(tǒng)功能模塊。繪制的主要圖形對象包括:點、線段、曲線、圓、矩形、正方形、菱形、任意三角形、等腰三角形、等邊三角形、直角三角形、帶外接圓的三角形、多邊形。系統(tǒng)總體結(jié)構(gòu)和部署示意圖如圖3.1所示:線段、射線、直線、矩形、圓、點正方形、菱 形、三角形、多邊形、曲 線角度、長度、距離、直角坐標(biāo)系里函數(shù)表達(dá)式的圖形生成基本圖形繪制模塊自定義圖形繪制模塊測量模塊2d函數(shù)圖形繪制模塊序列化模塊系統(tǒng)功能模塊基于gdi+2d
43、軟件開發(fā)方法初探2d幾何畫板圖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)模塊名稱功能描述基本圖形繪制基本圖形的繪制,如點,線段,圓,矩形等自定義圖形繪制自定義圖形的繪制,如菱形,多邊形,帶外接圓的三角形測 量對相應(yīng)對象進(jìn)行測量,如長度,距離,角度2d函數(shù)圖形繪制繪制直角坐標(biāo)系函數(shù)表達(dá)式的圖形,可分區(qū)間查看圖形特征序列化對繪制結(jié)果進(jìn)行序列化,對對象可再編輯系統(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è)計如圖3.3所示: (a)基類 (b)點 (c)圓 (d)矩形
44、 (e)直線 (f)多邊形 (g)三角形 (h)直角三角形 (i)等邊三角形 (j)三角形(帶外接圓) (k)菱形 (l)等腰三角形 (m)標(biāo)記文字 (n)曲線 (o)正方形圖3.3 類詳細(xì)設(shè)計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ī)格說明(1)顯示圖標(biāo)規(guī)格即桌面顯示的圖標(biāo):30 * 30,單位像素。桌面圖標(biāo)設(shè)計效果如圖3.4所示:圖3.4 桌面圖標(biāo)(2)圖標(biāo)規(guī)格即工具欄顯
45、示的圖標(biāo):20 * 20,單位像素。工具欄圖標(biāo)設(shè)計效果如圖3.5所示: (a)選取 (b)點 (c)直線 (d)矩形 (e)圓 (f)三角形 (g)標(biāo)記文字 (e)自定義圖3.5 工具欄圖標(biāo)在工具欄圖標(biāo)中,右下角帶黑色小三角的,表示該圖標(biāo)是同一類別圖形的集合,具體說明如表3.2所示:表3.2圖標(biāo)說明 圖標(biāo)名稱說 明選取選取點點直線直線、射線、線段、曲線矩形矩形、正方形、菱形圓圓三角形任意三角形、直角、等腰、等邊、三角形(帶外接圓)標(biāo)記文字標(biāo)記文字自定義六邊形、十二邊形、任意多邊形4系統(tǒng)窗體界面設(shè)計圖形界面是人機(jī)交互的接口,提供了直觀,方便的操作。在界面設(shè)計中,應(yīng)遵循美觀、舒適、操作方便、結(jié)構(gòu)合
46、理等要求。4.1設(shè)計原則在機(jī)算機(jī)軟件技術(shù)中,人機(jī)界面已經(jīng)發(fā)展成為一個重要的分支。基于gdi+2d圖形軟件開發(fā)方法初探2d幾何畫板系統(tǒng)的人機(jī)界面設(shè)計一般遵循了以下的原則: (1)簡潔。(2)方便。(3)直觀。4.2界面詳細(xì)設(shè)計系統(tǒng)的登錄界面圖4.1所示:圖4.1 系統(tǒng)登錄界面登錄界面中顯示一些基本的信息。在設(shè)計中采用了界面透明技術(shù),使得登錄界面更具視角沖擊。系統(tǒng)的主界面圖4.2所示:繪圖區(qū)快捷欄常用工具欄屬性面板系統(tǒng)狀態(tài)欄屬性控制區(qū)系統(tǒng)菜單欄圖4.2 系統(tǒng)主界面系統(tǒng)菜單欄設(shè)計如圖4.3所示:圖4.3 系統(tǒng)菜單欄系統(tǒng)菜單欄的詳細(xì)設(shè)計如圖4.4所示: 圖4.4 系統(tǒng)菜單欄的詳細(xì)設(shè)計系統(tǒng)快捷欄如圖4.
47、5所示:圖4.5 系統(tǒng)快捷欄系統(tǒng)快捷欄提供了系統(tǒng)功能的快捷操作,可以方便的操作,提高了效率。常用工具欄如圖4.6所示:圖4.6 常用工具欄系統(tǒng)屬性控制區(qū)是對相應(yīng)對象的相關(guān)屬性進(jìn)行控制,如圓可以設(shè)置半徑,曲線可以設(shè)置張力,并實時的繪制出變化后的圖形。系統(tǒng)屬性控制區(qū)如圖有4.7所示: 圖4.7 屬性控制區(qū)系統(tǒng)屬性面板是相關(guān)對象屬性的顯示區(qū)域,相關(guān)對象的屬性在屬性面板中實時的顯示出來。系統(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ū)域,所有圖形的繪制都在此
48、區(qū)域完成。繪圖區(qū)是圖形的繪制區(qū)域,可以繪制圖形并對圖形對象進(jìn)行控制、修改、變更等操作。直角坐標(biāo)系二維函數(shù)圖形顯示界面如下:函數(shù)表達(dá)式錄入界面如圖4.10所示:圖4.10 二維函數(shù)表達(dá)式錄入界面函數(shù)表達(dá)式圖形顯示界面如力4.11所示:圖4.11 二維表達(dá)式圖形顯示界面5圖形繪制模塊設(shè)計圖形繪制模塊主要負(fù)責(zé)系統(tǒng)基本圖形及自定義圖形的繪制,如點,線,圓,矩形,曲線,帶外接圓的三角形等?;诿嫦?qū)ο蟮脑O(shè)計思想,所有圖元對象都從一個基類派生,基類定義一些共有的屬性和方法,從它派生的類重寫基類的相應(yīng)方法來實現(xiàn)各自特有的動作。 5.1基類在.net中所有的對象都從object派生,這也是面向?qū)ο笏枷氲囊环N體
49、現(xiàn)。基類從object對象派生,其實現(xiàn)如圖5.1所示:圖5.1 基類從object對象派生實現(xiàn)基類中相應(yīng)方法的說明如表5.1所示:表5.1 基類方法說明方法名參數(shù)返回值功能hotpointgraphics,point void繪制關(guān)鍵點atpointpoint, point bool判斷當(dāng)前鼠標(biāo)坐標(biāo)是否落在關(guān)鍵點上atlinepoint,point, pointbool判斷當(dāng)前鼠標(biāo)坐標(biāo)是否落在線上paingraphicsvirtual void由關(guān)鍵點繪制出相應(yīng)的圖形selectatpointvirtual int判斷當(dāng)前選中關(guān)鍵屬性movegraphics,int,poinvirtual v
50、oi移動對象時發(fā)生的動作newpointpointvirtual in新建對象時發(fā)生的動作addpointpointvirtual int新增一個關(guān)鍵點hotpointsgraphicsvirtual void選中對象時繪制出其關(guān)鍵點drawfocus1graphicsvirtual void當(dāng)焦點落在關(guān)鍵點時響應(yīng)的動作drawfocus0graphicsvirtual void當(dāng)焦點離開關(guān)鍵點時響應(yīng)的動作5.2點點是基本的對象之一,它由一個坐標(biāo)確定。如果當(dāng)前繪制類型是點時,按下鼠標(biāo)左鍵時確定點的坐標(biāo),然后繪制出點;當(dāng)繪制類型是選擇時,按下鼠標(biāo)左鍵選中點并按動時,可以改變點的坐標(biāo),對點進(jìn)行移動
51、。點的繪制方法如圖5.2所示:圖5.2點繪制方法5.3線段線段是基本的對象之一,它由關(guān)鍵點確定。如果當(dāng)前繪制類型是線段,按下鼠標(biāo)左鍵時確定線段的第一個關(guān)鍵點,然后按著鼠標(biāo)左鍵并移動鼠標(biāo),當(dāng)釋放鼠標(biāo)左鍵時,確定線段的第二個關(guān)鍵點,然后由二個關(guān)鍵點確定線段。當(dāng)選中線段時,其二個關(guān)鍵點會高亮顯示??梢赃x中其關(guān)鍵點并改變關(guān)鍵點的屬性,也可以選中線段,移動線段。線段的繪制方法如圖5.3所示:圖5.3 線段繪制方法移動線段的方法如圖5.4所示:圖5.4 移動線段方法5.4矩形矩形有四個關(guān)鍵點,在繪制時只確定左上方和右下方二個關(guān)鍵點即可,左下方和右上方二個關(guān)鍵可由左上方和右下方二個關(guān)鍵點確定。當(dāng)繪制類型是矩
52、形時,按下鼠標(biāo)左鍵時確定左上方的關(guān)鍵點,然后按著鼠標(biāo)左鍵并拖動鼠標(biāo)繪制矩形,釋放鼠標(biāo)時確定右下方的關(guān)鍵點,完成矩形的繪制。當(dāng)選中矩形時,四個關(guān)鍵點將會高亮顯示,可以改變關(guān)鍵點的屬性,也可以選中矩形改變矩形的位置。矩形的繪制方法如圖5.5所示:圖5.5 矩形繪制方法移動矩形時響應(yīng)的方法如圖5.6所示:圖5.6 移動矩形響應(yīng)方法5.5正方形正方形是矩形的特例,它的四邊等長的矩形。正文形類從矩形類派生,與矩形類有相同的屬性,具有四個關(guān)鍵點。正文形的繪制方法如圖5.7所示:圖5.7正方形繪制方法5.6菱形菱形是矩形的特例,它具有四邊等長的特性。菱形類從矩形類派生,與矩形類具有相同的屬性,菱形類具有六個
53、關(guān)鍵點,可以改變菱形的大小,也可以改變菱形相應(yīng)角度的大小。菱形的繪制方法如圖5.8所示:圖5.8 菱形繪制方法菱形移動響應(yīng)的方法實現(xiàn)如圖5.9所示:圖5.9 菱形移動響應(yīng)方法5.7圓圓具有二個關(guān)鍵屬性,圓心坐標(biāo)和半徑。當(dāng)繪制類型為圓時,按下鼠標(biāo)左鍵時取得圓心坐標(biāo),按著鼠標(biāo)左鍵并拖動鼠標(biāo)時,動態(tài)計算出圓的半徑,釋放鼠標(biāo)時完成圓的繪制。圓的繪制方法如圖5.10所示:圖5.10 圓繪制方法移動圓的響應(yīng)方法實現(xiàn)如圖5.11所示:圖5.11 移動圓響應(yīng)方法判斷點在圓上的方法如圖5.12所示:圖5.12 判斷點在圓上的方法5.8任意三角形三角形是具有三個頂點三條邊的幾何圖形,在三角形繪制中,只在確定三個關(guān)
54、鍵點(即三個頂點)就可以繪制出三角形。繪制中是由鼠標(biāo)左鍵按下的來確定三角形的關(guān)鍵點的,因為三角形有三個關(guān)鍵點,所以要判斷鼠標(biāo)按下的次數(shù),當(dāng)鼠標(biāo)左鍵第一次按下時,記錄鼠標(biāo)坐標(biāo),并設(shè)置第一個關(guān)鍵點,第二次按下鼠標(biāo)左鍵時,記錄鼠標(biāo)坐標(biāo),設(shè)置第二個關(guān)鍵點,第三次按下鼠標(biāo)左鍵時,記錄鼠標(biāo)坐標(biāo),設(shè)置第三個關(guān)鍵點,當(dāng)三個關(guān)鍵點都確定時,繪制出相應(yīng)的三角形。在三角形的繪制過程中,可以動態(tài)的觀察到三角形的形狀。完成繪制后,也可以改變關(guān)鍵點的屬性,可以選中三角形對其進(jìn)行移動操作。三角形的繪制方法如圖5.13所示:圖5.13 三角形繪制方法繪制三角形時鼠標(biāo)按下響應(yīng)實現(xiàn)如圖5.14所示:圖5.14 繪制三角形鼠標(biāo)按下響應(yīng)方法5.9等腰三角形等腰三角形是三角形的特例,是有二邊相等的三角形。等腰三角形類從三角形類派生,在繪制時利用三角函數(shù)確定二邊相等,即二個底角相等來實現(xiàn)等腰三角形。在改變等腰三角形相關(guān)關(guān)鍵點時,其等腰有特性不會變。在繪制等腰三角形時,按下鼠標(biāo)左鍵時確定第一個關(guān)鍵點,然后按著鼠標(biāo)左鍵并拖動鼠標(biāo),將動態(tài)的繪制出等腰三角形,當(dāng)釋放鼠標(biāo)左鍵時,確定第二個關(guān)鍵點,第三個關(guān)鍵點是根據(jù)另外二個關(guān)鍵點來動態(tài)確定的。等腰三角形的繪制方法如圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東交通職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年宜賓職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 四年級數(shù)學(xué)(三位數(shù)乘兩位數(shù))計算題專項練習(xí)及答案
- 瀝青路面修復(fù)施工方案
- 2025年天津醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年四川護(hù)理職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年四川護(hù)理職業(yè)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 一年級數(shù)學(xué)(上)計算題專項練習(xí)集錦
- 五年級數(shù)學(xué)(小數(shù)乘除法)計算題專項練習(xí)及答案匯編
- 二零二五年藝術(shù)品買賣合同的藝術(shù)品真?zhèn)舞b別與交易程序3篇
- 高考語文復(fù)習(xí)【知識精研】《千里江山圖》高考真題說題課件
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 高中物理斜面模型大全(80個)
- 012主要研究者(PI)職責(zé)藥物臨床試驗機(jī)構(gòu)GCP SOP
- 農(nóng)耕研學(xué)活動方案種小麥
- 2024年佛山市勞動合同條例
- 污水管網(wǎng)規(guī)劃建設(shè)方案
- 城鎮(zhèn)智慧排水系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- 采購管理制度及流程采購管理制度及流程
- 五年級美術(shù)下冊第9課《寫意蔬果》-優(yōu)秀課件4人教版
- 節(jié)能降耗課件
評論
0/150
提交評論