版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,第11章 圖形應(yīng)用程序開發(fā),11.1 GDI+繪圖基礎(chǔ)11.2 圖形繪制11.3 綜合應(yīng)用 11.4 圖像處理,2,1.引例11.1,已知y=ax2,畫出如下的函數(shù)圖形:,,畫圖的步驟: 1.準(zhǔn)備工作 建立繪圖對(duì)象: 畫布、畫筆、畫刷2.繪圖方法畫坐標(biāo)軸、刻 度、標(biāo)記3. 利用函數(shù)已知x、獲得y,畫線4.釋放繪圖對(duì)象,11.1 GDI+基礎(chǔ)知識(shí),3,① 構(gòu)造畫布、建立繪圖工具(畫筆、畫刷、字體等)
2、 用對(duì)象的CreateGraphics()方法構(gòu)造Graphics類的實(shí)例: Dim g As Graphics = 控件對(duì)象.CreateGraphics() ‘畫布 Dim p As Pen = New Pen(Color.Blue, 2) ’畫線 Dim sb As Brush = New SolidBrush(Color.Blue) ‘寫字顏色
3、 ②調(diào)用繪圖方法繪制圖形 利用DrawLine方法畫坐標(biāo)軸、刻度 利用DrawString方法繪制刻度標(biāo)記和坐標(biāo)軸標(biāo)記③ 通過(guò)函數(shù)計(jì)算和DrawLine繪線④ 調(diào)用Dispose方法釋放繪圖對(duì)象,4,關(guān)鍵:屏幕原點(diǎn),繪圖原點(diǎn) Y軸方向問(wèn)題 y取負(fù)值 函數(shù)值縮放,能在規(guī)定的范圍內(nèi)繪制 像素、刻度、函數(shù)值,,(x0,y0),,,5,2.什么是
4、GDI? GDI+?,CDI:圖形設(shè)備接口(GDI)是一個(gè)可執(zhí)行程序,它接受Windows應(yīng)用程序的繪圖請(qǐng)求(表現(xiàn)為GDI的函數(shù)調(diào)用),并將它們傳給相應(yīng)的設(shè)備驅(qū)動(dòng)程序。GDI+:是對(duì)圖形設(shè)備接口的一個(gè)擴(kuò)展,它所提供的類可用于創(chuàng)建二維矢量圖形、操縱字體以及插入圖像。,6,3.圖形開發(fā)中最常用的類,7,1.常用繪圖函數(shù),11.2繪制函數(shù)和方法,說(shuō)明:1.除DrawLine外,都要有Rectangle矩形區(qū)(x0,y0,w,h)
5、 2.填空Fill ,用筆改為刷 例 FillPie(brush, startangle, sweepangle),,(X0,y0),,h,,w,8,2.Graphics常用方法,9,,例11.4 在窗體上按下對(duì)應(yīng)的按鈕,繪制圓柱、矩形、扇形、多邊形和曲線。,10,11. 3字體和繪制文字,字體Font類決定文本的字體格式 Dim 字體對(duì)象 As New Font(字體,大小,樣式) 例:Dim f
6、 As New Font("仿宋", 20, FontStyle.Bold)構(gòu)建字體工具f,書寫20象素的仿宋粗體字,1.字體Font,11,2.繪制文字,DrawString (string, font, brush, point) 文字 字體格式 顏色 起點(diǎn)坐標(biāo)11.8利用DrawString函數(shù)顯示陰影效果文字,方法: 1.兩個(gè)字符串位置不
7、同,顏色不同 2.灰色陰影設(shè)置畫刷 SolidBrush(Color.FromArgb(透明度, Color.Black)),12,1.繪制藝術(shù)圖 實(shí)驗(yàn)11-1,繪制算法思想: (1)將圓心為x0,y0、半徑為r的圓周上,分為n個(gè)等分點(diǎn)為圓心x,y,以半徑r1繪制n個(gè)圓。(2)已知圓心x0,y0,求該圓周上x,y點(diǎn)(見(jiàn)右)的方程為: x=x0+r*cos(α) y=y0+r*sin(α
8、) (3)利用繪園方法,0≤α≤2π,g.DrawEllipse(p, x - r, y - r, 2 * r, 2 * r) 'Circle (x, y), r,11.4應(yīng)用,13,2.繪制函數(shù)圖 實(shí)驗(yàn)sin,繪制Sin曲線1.聲明繪圖對(duì)象:畫布、畫筆、畫刷、字體2.計(jì)算x軸比例(像素、弧度)、繪制坐標(biāo)軸和刻度3.通過(guò)函數(shù)繪制SIN曲線 y軸放大倍數(shù)、y軸方向與數(shù)值關(guān)系進(jìn)一步思考: 1.x、y軸寫
9、軸標(biāo)記? 2.若要填充顏色如何實(shí)現(xiàn)?,14,3.繪制統(tǒng)計(jì)圖,例11.12 從文件中讀入數(shù)據(jù),并用這些數(shù)據(jù)繪制統(tǒng)計(jì)圖。,,,,,15,統(tǒng)計(jì)設(shè)計(jì)思想,① 文件讀入順序文件可使用FileOpen方法打開,然后用Input語(yǔ)句將數(shù)據(jù)讀入到數(shù)組。② 銷售比例計(jì)算 某教材的發(fā)行量/將發(fā)行量之和③ 顯示百分比 Format(比例值 * 100, "##.#") & "%",,,,
10、16,繪制餅圖思想,計(jì)算總和,計(jì)算單位值占角度360 /sum 設(shè)置起始角度 利用循環(huán) 計(jì)算每塊餅占角度a,調(diào)用函數(shù): g.FillPie(br(i), rect, a1,a) 求下一個(gè)起始角: a1=a1+a,,,,,,x,y,a1,,a,17,繪制直方圖思想,畫坐標(biāo)軸求數(shù)據(jù)最大值,計(jì)算單位值占高度比例:h/max利用循環(huán) 計(jì)算每塊x、y值位置,其中: x等分,y 數(shù)
11、值乘以比例 調(diào)用函數(shù): g.FillRectangle(sb, x1, h-y, 25, y),X1,h-y,,y,18,本章小節(jié),GDI+圖形處理類包含在System.Drawing命名空間使用GDI+在對(duì)象上繪制圖形過(guò)程 構(gòu)造畫布 建立繪圖工具(畫筆、畫刷、字體等) 調(diào)用繪圖方法繪制圖形 調(diào)用Dispose方法釋放繪圖對(duì)象 繪圖工具畫筆Pen、畫刷Brush、字體Font 圖形繪制通過(guò)繪圖
12、函數(shù)來(lái)完成。以Draw為前綴的函數(shù)用于繪制圖形,以Fill為前綴的函數(shù)用于區(qū)域填充掌握函數(shù)圖、藝術(shù)圖、統(tǒng)計(jì)圖繪制,19,11.4 自主學(xué)習(xí)--圖像處理,任務(wù)2:加載和顯示圖片,,,,20,11.4 圖像處理,加載圖像文件中的圖像并將其顯示在屏幕上,則需要Bitmap對(duì)象和Graphics對(duì)象。Bitmap類支持BMP、GIF、JPEG、PNG和TIFF等多種文件格式。 在創(chuàng)建Bitmap對(duì)象之后,使用Graphics對(duì)象的Dr
13、awImage函數(shù),就可以顯示圖像文件中的圖像。下面的代碼從JPEG文件創(chuàng)建Bitmap對(duì)象,然后繪制該圖像。,,,,21,11.4 圖像處理,Dim pic As Bitmap = New Bitmap("fruit.jpg")' 根據(jù)圖像文件聲明Bitmap對(duì)象Dim g As Graphics = Me.CreateGraphicsg.DrawImage(pic1, 5, 5, 300, 20
14、0) ' 從(5, 5)開始繪制300×200的圖像,,,,22,11.4 圖像處理,任務(wù)3:裁切和縮放圖像,,,,23,裁切和縮放圖像,設(shè)計(jì)分析DrawImage方法通過(guò)源矩形從原始圖像裁切部分圖像,根據(jù)目標(biāo)矩形的寬度和高度與源矩形的寬度和高度之比就可對(duì)圖像進(jìn)行縮放。設(shè)置DrawImage函數(shù)不同的參數(shù),可實(shí)現(xiàn)裁切和縮放圖像。,,,,24,裁切和縮放圖像,使用格式:DrawImage(圖像對(duì)象, 起始點(diǎn)x,
15、y [,寬,高]) 參數(shù)寬度與高度,可控制圖片的放大與縮小。當(dāng)寬度與高度為負(fù)值時(shí),可實(shí)現(xiàn)圖像在水平或垂直方向翻轉(zhuǎn)。DrawImage(圖像對(duì)象, 目標(biāo)矩形, 源矩形, GraphicsUnit.Pixel)源矩形定義了圖像對(duì)象將被讀取的區(qū)域,目標(biāo)矩形對(duì)被裁切到的圖像重新繪制,GraphicsUnit.Pixel指定繪制單位為像素。,,,,25,裁切和縮放圖像,使用格式:DrawImage(圖像對(duì)象, 起始點(diǎn)x, y [,寬,高]
16、) 參數(shù)寬度與高度,可控制圖片的放大與縮小。當(dāng)寬度與高度為負(fù)值時(shí),可實(shí)現(xiàn)圖像在水平或垂直方向翻轉(zhuǎn)。DrawImage(圖像對(duì)象, 目標(biāo)矩形, 源矩形, GraphicsUnit.Pixel)源矩形定義了圖像對(duì)象將被讀取的區(qū)域,目標(biāo)矩形對(duì)被裁切到的圖像重新繪制,GraphicsUnit.Pixel指定繪制單位為像素。,,,,26,11.4 圖像處理,任務(wù)4:旋轉(zhuǎn)、反射和扭曲圖像,,,,27,旋轉(zhuǎn)、反射和扭曲圖像,使用圖像對(duì)象的Ro
17、tateFlip方法翻轉(zhuǎn)或者同時(shí)旋轉(zhuǎn)和翻轉(zhuǎn)圖像。其格式是:圖像對(duì)象.RotateFlip(RotateFlipType.成員),,,,28,本章小節(jié),GDI+圖形處理類包含在System.Drawing命名空間使用GDI+在對(duì)象上繪制圖形過(guò)程 構(gòu)造畫布 建立繪圖工具(畫筆、畫刷、字體等) 調(diào)用繪圖方法繪制圖形 調(diào)用Dispose方法釋放繪圖對(duì)象 繪圖工具畫筆Pen、畫刷Brush、字體Font 圖形繪制通過(guò)繪圖函
18、數(shù)來(lái)完成。以Draw為前綴的函數(shù)用于繪制圖形,以Fill為前綴的函數(shù)用于區(qū)域填充,29,思考題,1. 簡(jiǎn)述GDI+的內(nèi)容及其包含的命名空間,System.Drawing命名空間中主要包含哪些類?各類的主要功能是什么?2. 簡(jiǎn)述GDI+ 繪制圖形的基本步驟。3. 怎樣用Alpha通道淡化顏色?4. 怎樣繪制帶有箭頭的X軸?5. 怎樣繪制圓、橢圓、圓弧和扇形?6. 怎樣在圖形中繪制文字?,,,,,30,思考題,6. 怎樣在圖形中繪
19、制文字?7. 如何使用漸變刷、網(wǎng)格刷、紋理刷填充文字?8. 繪一圓弧其終止角度為正數(shù)時(shí)其繪圖方向是什么?9.在GDI+中如何實(shí)現(xiàn)坐標(biāo)變換? 10.簡(jiǎn)述DrawImage函數(shù)處理圖像的方法。,,,,,31,11.1.2坐標(biāo)系,默認(rèn)坐標(biāo)系,在繪制數(shù)學(xué)函數(shù)y=f(x)的圖形時(shí),一般兩種處理方式: 1. 進(jìn)行坐標(biāo)的變換,例如旋轉(zhuǎn),平移等。 2. 設(shè)置原點(diǎn)坐標(biāo)x0、y0,直接進(jìn)行x=x0+,32,Graphice對(duì)象坐標(biāo)變換方法
20、,,,33,畫筆Pen,例11.3用畫筆畫線 Dim g As Graphics ' 聲明Graphicsg = Me.CreateGraphics ' 構(gòu)造畫布gDim p As New Pen(Color.Red, 5) ' 5象素的紅色畫筆p.SetLineCap(LineCap.Flat, LineCap.ArrowAnchor,
21、 DashCap.Flat) ' 設(shè)置直線起終端的樣式g.DrawLine(p, 50, 10, 300, 10) ' 在畫布上畫有箭頭的線p.EndCap = LineCap.Flat ' 取消畫筆終止端的樣式p.DashStyle = DashStyle.DashDot ' 設(shè)置點(diǎn)劃線樣式p.Width = 2 ‘ 設(shè)置線
22、寬 2 象素g.DrawLine(p, 50, 30, 300, 30) ' 在畫布上畫點(diǎn)劃線,34,11.2.2圖形填充,1.畫刷畫刷Brush主要用于封閉圖形的填充。不能直接將Brush類實(shí)例化,而只能實(shí)例化它的子類對(duì)象。常用的Brush的子類有:?jiǎn)紊?SolidBrush紋理刷 TextureBrush漸變刷 LinearGradientBrush網(wǎng)格刷 HatchBrush,35,11.
23、2.2圖形填充,(1)單色刷 只能用一種顏色填充區(qū)域Dim sb As SolidBrush = New SolidBrush(Color.Blue)聲明了一個(gè)藍(lán)色的單色刷 sb2.紋理刷 用一個(gè)圖片來(lái)填充圖形Dim tb As New TextureBrush(New Bitmap(“圖片”))例:使用圖片創(chuàng)建的紋理刷 tbDim tb As New TextureBrush(New Bitmap("if
24、.gif")),36,畫刷Brush,3.漸變刷 用線性漸變色來(lái)填充圖形Dim lb As New LinearGradientBrush(Point1, Point2, Color1, Color2)參數(shù)Point1、Point2構(gòu)成一個(gè)矩形區(qū)域,Color1、Color2分別設(shè)置漸變的起始點(diǎn)顏色和終點(diǎn)顏色。例 Dim lb As New LinearGradientBrush(pt1, pt2, Col
25、or.Blue, Color.White) ' 漸變刷lb4.網(wǎng)格刷 根據(jù)條紋模式來(lái)設(shè)置填充類型Dim hb As New HatchBrush(條紋類型, 前景色, 背景色)例 Dim hb As New HatchBrush(HatchStyle.DarkHorizontal, Color.Blue, Color.Yellow) ' 網(wǎng)格刷hb,37,畫刷范例,例11.5 演示漸變刷、網(wǎng)格刷、紋理刷三種
26、畫刷的效果,38,繪制扇形例,Dim g As Graphics g = Me.CreateGraphicsDim p As New Pen(Color.Blue, 4)' 畫筆Dim rect As New Rectangle(5, 5, 180, 180) g.DrawPie(p, rect, -45, -135)Dim hb As New HatchBrush(HatchStyle.Cross, Color.Bl
27、ue, Color.Yellow) ' 網(wǎng)格刷g.FillPie(hb, rect, -45, -135),39,11.2.3 字體Font,字體Font類決定文本的字體格式(字體類型、大小以及風(fēng)格)。用Font類的構(gòu)造函數(shù)建立一種字體,需要3個(gè)參數(shù):Dim 字體對(duì)象 As New Font(字體,大小,樣式)例:Dim f As New Font("仿宋", 20, FontStyle.Bol
28、d)構(gòu)建字體工具f,書寫20象素的仿宋粗體字,40,本章學(xué)習(xí)目標(biāo),通過(guò)本章的學(xué)習(xí),能夠靈活運(yùn)用GDI+提供的功能繪制圖形。學(xué)習(xí)要點(diǎn):(1)創(chuàng)建Graphics對(duì)象,使用GDI+繪圖。(2)使用畫筆和填充工具,學(xué)習(xí)描述對(duì)象的顏色和透明度的Color結(jié)構(gòu)繪制各種圖形。(3)使用圖像功能進(jìn)行翻轉(zhuǎn)、縮放、剪切等圖像處理。,41,11.1 GDI+基礎(chǔ)知識(shí),GDI+在System.Drawing.Dll程序集中定義,它的相關(guān)類都分布在以
29、下命令空間:System.Drawing:提供GDI+基本圖形功能System.Drawing2D:提供高級(jí)的二維和矢量圖形功能。System Imaging:提供GDI+圖像處理功能System.Drawing.Text:字體處理功能,42,例11.8 在窗體上輸出陰影文字效果。陰影效果其實(shí)質(zhì)是將同一文本內(nèi)容顯示兩遍,利用位置的相錯(cuò)和顏色的變化來(lái)實(shí)現(xiàn)。以下代碼將產(chǎn)生陰影文字效果:Dim g As Graphicsg =
30、Me.CreateGraphicsDim f As New Font("宋體", 50, FontStyle.Bold)Dim sb1 As New SolidBrush(Color.Black) ' 構(gòu)造畫刷Dim sb2 As New SolidBrush(Color.FromArgb(100, Color.Black)) ' 構(gòu)造畫刷sb2g.DrawString("陰影
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- vb.net 程序設(shè)計(jì)--客房管理系統(tǒng)
- vb程序設(shè)計(jì)教程課后答案
- gps應(yīng)用程序設(shè)計(jì)
- 基于.net的web應(yīng)用程序設(shè)計(jì)課后答案
- 《visual c--.net程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》第11章數(shù)據(jù)庫(kù)編程
- 第2章vb程序設(shè)計(jì)語(yǔ)言基礎(chǔ)
- vb程序設(shè)計(jì)例題-程序改錯(cuò)程序填空程序設(shè)計(jì)
- vfp應(yīng)用程序設(shè)計(jì)實(shí)例
- web應(yīng)用程序設(shè)計(jì)專業(yè)
- web應(yīng)用程序設(shè)計(jì)(aspnet)
- vb程序設(shè)計(jì)
- 基于vb.net的房屋租賃管理系統(tǒng)設(shè)計(jì)【帶程序】
- 基于vb.net的房屋租賃管理系統(tǒng)設(shè)計(jì)【帶程序】
- 《visual c#程序設(shè)計(jì)教程與上機(jī)指導(dǎo)》第6章windows程序設(shè)計(jì)
- web_《web高級(jí)程序設(shè)計(jì)教程》第2章__web程序設(shè)計(jì)的基礎(chǔ)
- 基于web服務(wù)應(yīng)用程序設(shè)計(jì)
- 2多線程應(yīng)用程序設(shè)計(jì)
- web應(yīng)用程序設(shè)計(jì)課后習(xí)題
- vb題庫(kù)-程序設(shè)計(jì)
- vb程序設(shè)計(jì)習(xí)題
評(píng)論
0/150
提交評(píng)論