




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第7章 圖形應(yīng)用程序開發(fā)n本章主要內(nèi)容qGDI+的主要命名空間qGraphics類和Paint事件q坐標(biāo)系統(tǒng)qPen類qBrush類qFont類q圖像繪制q路徑繪制與填充7.1 圖形繪制概述qGDI+(Graphics Device Interface,圖形設(shè)備接口)是Microsoft Windows XP以及后續(xù)Windows操作系統(tǒng)的子系統(tǒng),同時又是.NET提供的一種新的簡單、快速的圖形圖象開發(fā)技術(shù),它是GDI(Windows早期版本提供的圖形設(shè)備接口)的后續(xù)版本。GDI+將應(yīng)用程序與圖形硬件隔離,利用GDI+可以創(chuàng)建與設(shè)備無關(guān)的應(yīng)用程序。7.1 圖形繪制概述qGDI+主要命名空間,如下
2、表所示。7.1 圖形繪制概述qGraphics類封裝了GDI+繪圖界面,提供了在繪圖的功能,通俗的理解Graphics類相當(dāng)于繪畫時的畫板。q實例化Graphics對象有兩種方式。n重寫Paint事件,例如:qProtected Overrides Sub OnPaint(e As PaintEventArgs)q Dim g As Graphics = e.GraphicsqEnd Subn使用CreateGraphics方法。例如:qPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventAr
3、gs) Handles MyBase.Loadq Dim g As Graphics = Me.CreateGraphics()qEnd Sub7.1 圖形繪制概述q當(dāng)窗口改變時,窗口就需要重繪。q窗口重繪時觸發(fā)Paint事件,調(diào)用繪圖應(yīng)用程序。n代碼示例:q演示在OnPaint方法和OnLoad中繪制圖形的不同q項目CH07OnPaintExam7.1 圖形繪制概述n1.NET坐標(biāo)系統(tǒng)qGDI+共有三個坐標(biāo)空間:全局坐標(biāo)也稱世界坐標(biāo)、頁面坐標(biāo)和設(shè)備坐標(biāo)。q全局坐標(biāo):指要測量的點距離繪圖區(qū)域左上角的位置(以象素為單位),這個名稱反映了整個繪圖大致可以看作是程序所在的“世界”中。q頁面坐標(biāo):指要
4、測量的點距離客戶區(qū)域(窗體去處邊框后的區(qū)域)左上角的位置(以象素為單位)。這個名稱說明把顯示區(qū)域看作顯示輸出的“頁面”。q設(shè)備坐標(biāo)類似頁面坐標(biāo),但它的測量單位不是象素,而是用戶通過調(diào)用Graphics.PageUnit屬性指定的單位。q在.NET編程中每個控件使用的坐標(biāo)都是相對坐標(biāo),即相對于本容器的左上角為坐標(biāo)原點(0,0)。例如:Form中放置一個Panel,該Panel中放置一個Button,那么Button的坐標(biāo)原點(0,0)是相對Panel的左上角的而不是相對于Form左上角。7.1 圖形繪制概述n代碼示例:q演示繪制一個橢圓,理解.NET坐標(biāo)系統(tǒng)和Paint事件。項目CH07Pain
5、tEvent 7.1 圖形繪制概述n2Point和PointF qPoint表示平面上的一個點,等價于一個二維矢量,也是一個象素的表示方式。Point結(jié)構(gòu)中的變量為Integer類型。Point的構(gòu)造函數(shù)為:qPublic Sub New(ByVal x As Integer,ByVal y As Integer )q例如:Dim myPoint As New Point(12,25)qPointF與Point完全相同,區(qū)別是PointF結(jié)構(gòu)中所有的變量為Single類型。q例如:Dim SinglePoint As New PointF(30.6F,20.7F)7.1 圖形繪制概述n3Siz
6、e和SizeFqSize表示一個尺寸(象素)。Size結(jié)構(gòu)包括寬度和高度。構(gòu)造函數(shù):qPublic Sub New(ByVal pt As Point)qPublic Sub New(ByVal width As Integer,ByVal height As Integer )q例如:Dim s As New Size(5, 5)qSize和Point表示的含義相同,但Point用于說明實體在什么地方,而Size用于說明實體有多大。Size和SizeF完全相同,區(qū)別是SizeF結(jié)構(gòu)中所有的變量類型為Single類型。7.1 圖形繪制概述n4Rectangle和RectangleFqRecta
7、ngle表示一個矩形區(qū)域,可看作由一個Point和一個Size組成,Point結(jié)構(gòu)定義矩形的左上角,Size定義其大小。Rectangle有兩個構(gòu)造函數(shù)。如下所示:qPublic Sub New(ByVal location As Point,ByVal size As Size )qPublic Sub New(ByVal x As Integer, ByVal y As Integer, ByVal width As Integer,ByVal height As Integer )qRectangleF和Rectangle相同,區(qū)別是RectangleF結(jié)構(gòu)中所有的變量為Single類型
8、。7.1 圖形繪制概述n代碼示例:q例如:構(gòu)建一個左上角坐標(biāo)為(1,2),寬度為8,高度為10的矩形結(jié)構(gòu)如下:qDim s R1 New Rectangle(1,2,8,10)q或者qDim p As new Point(1,2)qDim s As new Size(8,10)qDim r2 As new Rectangle(p,s)7.1 圖形繪制概述q在GDI+中,顏色封裝在Color結(jié)構(gòu)中。該結(jié)構(gòu)大約有150個屬性,提供了大量的預(yù)置顏色。獲取Color對象可以有兩種方法。n通過Color結(jié)構(gòu)的靜態(tài)屬性獲得系統(tǒng)定義好的顏色。例如:qDim myColor1 As Color=Color.B
9、lackqDim myColor2 As Color=Color.Red7.1 圖形繪制概述n調(diào)用FromArgb方法。該方法有4種重載形式:q(1)從一個32位ARGB值創(chuàng)建Color結(jié)構(gòu)。qPublic Shared Function FromArgb(ByVal argb As Integer) As Colorq例如:qDim trnsRedBrush As New SolidBrush(Color.FromArgb(&H78FF0000)q(2)從指定的Color結(jié)構(gòu)創(chuàng)建Color結(jié)構(gòu)。qPublic Shared Function FromArgb(ByVal alpha
10、As Integer,ByVal baseColor As Color ) As Colorq例如:qDim myColor1 As Color = Color.FromArgb(alpha,red)7.1 圖形繪制概述q(3)從指定的8位顏色值創(chuàng)建Color結(jié)構(gòu)。qPublic Shared Function FromArgb(ByVal red As Integer, ByVal green As Integer, ByVal blue As Integer ) As Colorq例如:qDim green As Color = Color.FromArgb(0,255,0)q(4)從四個
11、ARGB分量(alpha、紅色、綠色和藍色)值創(chuàng)建Color結(jié)構(gòu)。Public Shared Function FromArgb(ByVal alpha As Integer, ByVal red As Integer,ByVal green As Integer, ByVal blue As Integer ) As Colorq例如:qDim myColor1 As Color =Color.FromArgb(120, 255, 0, 0)7.2 圖形操作qPen類規(guī)定了使用Graphs類繪制線條時,線條的顏色、線寬和線條的樣式。線條的樣式表示該線是由實線、短線或點組成。7.2 圖形操作n
12、Pen類構(gòu)造函數(shù)的幾種重載形式qPublic Sub New(Bush):用指定的Brush對象初始化Pen類的新實例。qPublic Sub New(Color):用指定的顏色初始化Pen類的新實例。qPublic Sub New(Brush,Single):用指定的Brush對象和Width初始化Pen類的新實例。qPublic Sub New(Color,Single):用指定的Color對象和Width初始化Pen類的新實例。q例如:創(chuàng)建一個線寬為8象素,顏色為藍色的鋼筆代碼如下所示。qDim p As New Pen(Color.Blue,8.0F)7.2 圖形操作n使用System
13、Pens和Pens類獲取對象的引用q例如:qDim myPen As Pen=SystemPens.HigtlightTextqDim myPen As Pen=Pens.Red7.2 圖形操作nPens類常用的屬性如表7.2 圖形操作n代碼演示q演示項目Ch07PenExam 7.2 圖形操作qBrush類是一個抽象基類,不能實例化。若要創(chuàng)建一個畫筆對象,須使用Brush類的派生類來實現(xiàn)。qBrush類的作用是用來填充圖形(如矩形、橢圓形、扇形、多邊形和封閉路徑)內(nèi)部區(qū)域的。7.2 圖形操作nBrush類的主要派生類如下表所示:7.2 圖形操作n代碼演示q演示SolidBrush的用法,項目
14、CH07SolidBrushExamq演示HatchBrush的用法,項目CH07HatchBrushExam7.2 圖形操作n代碼演示q演示LinearGradientBrush的用法,項目CH07LinearGradientBrushExamq演示PathGradientBrush的用法,項目CH07PathGradientBrushExam7.2 圖形操作n5TextureBrush示例q使用TextureBrush類可以把位圖作為畫刷進行填充,它的構(gòu)造函數(shù)如下:qPublic Sub New(Image):使用指定圖形構(gòu)造TextureBrush對象。qPublic Sub New(I
15、mage,Rectangle):使用指定圖像和邊框構(gòu)造TextureBrush對象。q例如:qDim r1 As New Rectangle(10, 10, 50, 50)qDim ImaBrush As TextureBrush=new TextureBrush(new(“a.bmp”),r1)qPublic Sub New(Image,WrapMode):使用指定的圖像和自動換行模式構(gòu)造TextureBrush對象。7.2 圖形操作nWrapMode參數(shù)控制位圖填充的行為,其枚舉值如下表所示:7.2 圖形操作nTextureBrush類常用屬性如下表所示:nTextureBrush類常用方
16、法7.2 圖形操作n代碼示例:q演示TextureBrush的用法,項目CH07TextureBrushExam7.3 圖像操作qImage是一個抽象類,它有兩個子類Bitmap和Metafile。Bitmap類用于一般的圖像,Metafile類用于定義圖形圖元文件。圖元文件包含描述一系列圖形操作的記錄,通過這些記錄可以重繪圖形,Metafile類主要用于矢量圖。qImage對象總是要調(diào)用Dipose方法來釋放資源,否則應(yīng)用程序可能要耗盡Windows資源。7.3 圖像操作n下表是Bitmap主要屬性n下表是Bitmap主要方法7.3 圖像操作n1創(chuàng)建圖像q從文件中加載圖像可以使用Image類
17、的靜態(tài)方法Image.FromFile(),也可以使用Bitmap類的構(gòu)造方法獲得。q例如:如下代碼是使用Image類靜態(tài)方法和Bitmap類的構(gòu)造方法獲得圖像。qDim myImage As ImageqmyImage = New Bitmap(./car.jpg)qmyImage = Image.FromFile(./car.jpg)7.3 圖像操作n2繪制圖像qDrawImage方法,該方法有許多重載方法,其規(guī)律是第一個參數(shù)是需要繪制的Image,其余的參數(shù)是描述Image的繪圖區(qū)域及其他屬性。q例如,如下代碼是在窗體中顯示一幅圖像:qDim g = e.Graphicsqg.DrawI
18、mage(myImage,ClientRectangle)7.3 圖像操作n3圖像格式轉(zhuǎn)換qGDI+可以支持:BMP、GIF、JPEG、PNG、TIFF、ICON等多種圖像文件,它們之間的轉(zhuǎn)換是通過ImageFormat類轉(zhuǎn)換的。如下代碼所示:qmyImage.Save(“image1”, ImageFormat.Bmp) 圖像保存為image1.BmpqmyImage.Save(“image2”, ImageFormat.Gif) 圖像保存為image1.GifqmyImage.Save(“image3”, ImageFormat.Tiff) 圖像保存為image1.Tiff7.3 圖像操作
19、qRotateFlip方法可以實現(xiàn)圖像的旋轉(zhuǎn),該方法接受RotateFlipType類型的枚舉。q下表是RotateFlipType的枚舉值7.3 圖像操作q例如:qbitmap1.RotateFlip(RotateFlipType.Rotate180FlipY) bitmap1旋轉(zhuǎn)180度后垂直翻轉(zhuǎn)。qbitmap2.RotateFlip(RotateFlipType. Rotate90FlipX) bitmap2旋轉(zhuǎn)90度后水平翻轉(zhuǎn)。7.3 圖像操作q一個二維平面可以劃分成四個象限。屏幕僅能顯示一個象限的圖形,即下圖中中右下角的象限,其他三個象限并不能顯示。7.3 圖像操作q坐標(biāo)的變換可以
20、使用兩種方法:一種是使用Graphics變換,另一種是使用Matrix變換。該兩種變換都是變換坐標(biāo)原點圖形。n1Graphics變換相關(guān)方法7.3 圖像操作n2Matrix類變換q使用Matrix類坐標(biāo)變換需要三個步驟,如下所示:q(1)創(chuàng)建Matrix類的對象并進行矩形的變換。q(2)將Matrix類的對象變換的結(jié)果賦予Graphics類的對象。q(3)使用DrawImage方法進行繪圖。7.3 圖像操作nMatrix變換常用方法如下表所示7.3 圖像操作n代碼示例:q演示使用Graphics和Matrix類進行圖形變換,項目CH07TransformExap 7.4 字體和文本qFont類
21、封裝了字體的三個主要特性:字體系列、字體大小和字體樣式。Font類在System.Drawing命名空間中。q字體的Size屬性表示字體類型的大小。Font類中的Unit屬性定義了字體的測量單位,并通過GraphicUnit枚舉來更改。7.4 字體和文本q下表是對GraphicUnit枚舉7.4 字體和文本nFont類的構(gòu)造函數(shù)有很多,常用的如下所示:qPublic Sub New(FontFamily,Single)qPublic Sub New(FontFamily,Single,F(xiàn)ontStyle,GraphicsUnit)qFontFamily:新字體的FontFamily對象的字符串
22、表示方式。qSingle:新字體對象的大小。qFontStyle:要應(yīng)用于新字體對象的FontStyle枚舉qGraphicsUnit:指定新字體對象的度量單位的GraphicsUnit枚舉q例如:qDim myFont As New Font(“宋體”,20)7.4 字體和文本n下表列出了Font類的常用屬性7.4 字體和文本q繪制文本使用DrawString方法,該方法在指定位置并且使用指定的Brush和Font對象繪制指定的文本字符串。該方法重載了許多方法,如下所示:qDrawString(String, Font, Brush, PointF)qDrawString(String, Font, Brush, RectangleF)qDrawString(String, Font, Brush, PointF, StringFormat)qDrawString(String,
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公寓代理銷售合同范本
- 冰淇淋套餐合同范本
- 出售文明公寓合同范本
- 中藥加工合同范本
- 公寓閣樓買賣合同范本
- cps推廣合同范本
- 農(nóng)戶斗雞養(yǎng)殖合同范本
- 事業(yè)物業(yè)合同范本
- 住家阿姨用工合同范本
- 與單位停車合同范例
- 2025年湖南交通職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 部編人教版道德與法治九年級下冊全冊課件
- 《新能源發(fā)電技術(shù)第2版》 課件全套 朱永強 第1-10章 能源概述- 分布式發(fā)電與能源互補
- 人教版數(shù)學(xué)五年級下冊 全冊各單元教材解析
- GB-T 9251-2022 氣瓶水壓試驗方法(高清版)
- 基于單片機的電子廣告牌設(shè)計畢業(yè)設(shè)計論文
- 承插型盤扣式支模架專項施工方案
- 我國古代職業(yè)教育的發(fā)展
- 通用橫版企業(yè)報價單模板
- 中國移動B-BOSS系統(tǒng)總體結(jié)構(gòu)
- 船舶目標(biāo)成本-造船成本核算方法(共9頁)
評論
0/150
提交評論