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