版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第1部分第9章 二維圖形圖像處理,9.1 GDI+概述 9.2 繪制基本圖形 9.3 圖像處理,9.1 GDI+概述,?GDI+:Graphics Device Interface (圖形設(shè)備接口),它提 供了高級圖形圖像處理功能?在C#中,通過一套部署為托管代碼的類來展現(xiàn)提供的圖 形圖像處理功能,這套類被稱為GDI+的托管類。利用 GDI+的托管類可以輕松實(shí)現(xiàn)顏色漸變、透明處理、紋理處理、拉伸和縮
2、放等多種高級功能。? GDI+主要提供了三類服務(wù): 1. 二維矢量圖形處理 2.二維圖像處理 3.文字顯示,?在C#中,所有圖形圖像處理功能都包含在以下名稱空間下:1.System.Drawing名稱空間提供了對GDI+基本圖形功能的訪問,主要有Graphics類Bitmap類、從Brush類繼承的類、Font類、Icon類、Image類、Pen類、Color類等。2.System.Drawing.
3、Drawing2D名稱空間提供了高級的二維和矢量圖形處理功能。主要有:梯度型畫刷、Matrix類(用于定義幾何變換)和GraphicsPath類等。3.System.Drawing.Imaging名稱空間 提供了高級 圖像處理功能。 4.System.Drawing.Text名稱空間 提供了高級 字體和文本排版功能,9.1 GDI+概述(續(xù)),9.1.2 Graphics類,繪制圖形圖像前,首先必須創(chuàng)建Graphics
4、對象,然后利用這個(gè)對象繪制直線、曲線、橢圓等圖形圖像。有三種常見的創(chuàng)建Graphics對象的方法。 1.在窗體或控件的Paint事件中獲取Graphics對象。例如: private void Form1_Paint(……) { Graphics g = e.Graphics; },2.通過當(dāng)前窗體的CreateGraphics方法,把當(dāng)前窗體的畫筆、字
5、體、顏色作為默認(rèn)值,獲取對Graphics對象的引用。例如: Graphics g = this.CreateGraphics(); ……3. 從繼承自圖像的任何對象創(chuàng)建Graphics對象,例如: Bitmap myBitmap = new Bitmap(@"C:\mytest1\Pics\myPic.bmp"); Graphics g = Graphics.FromIma
6、ge(myBitmap);,9.1.2 Graphics類(續(xù)),9.1.3 顏色,顏色封裝在System.Drawing.Color結(jié)構(gòu)中。人眼可以分辨的任何顏色都是由一定的紅、綠、藍(lán)三色光組成。任何一種顏色都可以有四個(gè)分量:R:紅色,取值范圍0~255,0表示沒有紅色成分,255為飽和紅色;G:綠色,取值范圍0~255,0表示沒有綠色成分,255為飽和綠色;B:藍(lán)色,取值范圍0~255,0表示沒有藍(lán)色成分,255為飽和藍(lán)色;
7、A:Alpha值,即透明度,取值范圍0~255,0表示完全透明,255表示完全不透明。,在代碼中聲明顏色的方式常用有兩種: 1.調(diào)用靜態(tài)方法Color.FromArgb()指定任意顏色,這種方法有兩種常用形式。?第一種形式為直接指定三種顏色,方法原型為: Public static Color FromArgb (int red,int green,int blue); 三個(gè)參數(shù)分別表示R、G、B三色,Alpha
8、值使用默認(rèn)值255,即完全不透明。例如: Color red = Color.FromArgb(255, 0, 0);?第二種形式為四個(gè)參數(shù),方法原型為: Public static Color FromArgb (int alpha,int red,int green, int blue); 四個(gè)參數(shù)分別表示透明度、R、G、B三色值。,9.1.3 顏色(續(xù)),2.系統(tǒng)預(yù)定義顏色 System.
9、Drawing.Color結(jié)構(gòu)中提供了許多靜態(tài)性,每個(gè)屬性返回一個(gè)命名顏色,在Color結(jié)構(gòu)中已經(jīng)預(yù)定義了141種顏色,可以直接使用。例如: this.BackColor = Color.White;,9.1.3 顏色(續(xù)),9.1.4 畫筆和畫刷,畫筆(Pen) 畫筆可用于繪制繪制具有指定寬度和樣式的直線、曲線或輪廓形狀。 下面的示例說明如何創(chuàng)建一支基本的藍(lán)色畫筆: Pen myPen = new P
10、en(Color.Blue); Pen myPen = new Pen(Color.Blue, 10.5f); 也可以從畫刷對象創(chuàng)建畫筆對象,例如: SolidBrush myBrush = new SolidBrush(Color.Red); Pen myPen = new Pen(myBrush); Pen myPen = new Pen(myBrush, 5); 【例9-
11、2 】畫筆(Pen)的用法。,9.1.4 畫筆和畫刷(續(xù)),畫刷(Brush)畫刷是可以與Graphics對象一起使用來創(chuàng)建實(shí)心形狀和呈現(xiàn)文本的對象??梢杂脕硖畛涓鞣N圖形形狀,如矩形、橢圓、餅型圖和多邊形等。下表列出了幾種不同類型的畫刷。,1)使用SolidBrush類定義單色畫刷 SolidBrush類用于定義單色畫刷。該類可以填充圖形,比如矩形、橢圓、多邊形和路徑。 【例9-3 】單色畫刷演示示例。,9.1.4 畫筆和畫
12、刷(續(xù)),運(yùn)行結(jié)果如右圖所示:,2)使用HatchBrush類填充簡單圖案 HatchBrush類提供的畫刷可以用各種圖案填充圖形。通過Hatch類型可以設(shè)置影線樣式。在創(chuàng)建影線的畫刷時(shí),能設(shè)定前景色、背景色和影線樣式。有56種不同的影線樣式枚舉,該枚舉可以參看System.Drawing.Drawing2D.HatchStyle枚舉?!纠?-4 】填充簡單圖案示例。,9.1.4 畫筆和畫刷(續(xù)),運(yùn)行結(jié)果
13、如右圖所示:,3)使用TextureBrush類填充復(fù)雜圖像TextureBrush類使用圖像作為填充的樣式,它可以使用例如.bmp、.jpg、.png等格式的圖像。初始化一個(gè)新的TextureBrush對象需要指定填充的圖像。 【例9-5 】創(chuàng)建TextureBrush示例。 運(yùn)行效果:,9.1.4 畫筆和畫刷(續(xù)),4)使用LinearGradientBrush類定義線性漸變 LinearGradie
14、ntBrush對象用顏色線性漸變填充圖形。提供了以下三種構(gòu)造函數(shù): (1) 提供兩個(gè)點(diǎn)和兩種顏色。 Public LinearGradientBrush ( Point point1, Point point2, Color color1, Color color2) (2) 提供一個(gè)矩形和一個(gè)角度。 Public LinearGradientBrush
15、(Rectangle rect ,Color color1, Color color2,float angle) (3) 指定漸變的模式。 Public LinearGradientBrush (Rectangle rect ,Color color1, Color color2, LinearGradientMode linearGradientMode),
16、9.1.4 畫筆和畫刷(續(xù)),【例9-6 】使用點(diǎn)描述線性漸變。運(yùn)行效果:【例9-7】使用矩形描述線性漸變。運(yùn)行效果:,9.1.4 畫筆和畫刷(續(xù)),5)使用PathGradientBrush類實(shí)現(xiàn)彩色漸變 在GDI+中,把一個(gè)或多個(gè)圖形組成的形體稱為路徑??梢允褂肎raphicsPath類定義路徑,使用PathGradientBrush類定義路徑內(nèi)部的漸變色畫刷。漸變色從路徑的內(nèi)部中心點(diǎn)逐漸過渡到
17、路徑的外邊界邊緣。 PathGradientBrush類提供了三種重載的構(gòu)造函數(shù),其中常用的是通過指定路徑實(shí)現(xiàn)彩色漸變。常用形式如下: Public PathGradientBrush ( GraphicsPath path)【例9-8 】路徑和路徑畫刷的使用示例。運(yùn)行效果:,9.1.4 畫筆和畫刷(續(xù)),9.2 繪制基本圖形,所有繪制圖形的方法都位于Graphics中。9.2.1 直線Dr
18、awLine方法:繪制一條直線,常用形式: 1) 繪制一條連接指定兩個(gè)Point結(jié)構(gòu)的線。 public void DrawLine (Pen pen,Point pt1, Point pt2) 其中,Pen對象確定線條的顏色、寬度和樣式; Point結(jié)構(gòu)確定起點(diǎn)和終點(diǎn)。 2) 繪制一條由坐標(biāo)對指定的兩個(gè)點(diǎn)的線。 public void
19、DrawLine (Pen pen,int x1, int y1,int x2,int y2) 其中,Pen對象確定線條的顏色、寬度和樣式; x1,y1為起點(diǎn)坐標(biāo),x2,y2為終點(diǎn)坐標(biāo)。,9.2.1 直線(續(xù)),DrawLines方法:繪制一系列點(diǎn)組成的線。常用形式: public void DrawLines (Pen pen,Point[] points)
20、 其中,Pen對象確定線條的顏色、寬度和樣式;數(shù)組中的第一個(gè)點(diǎn)指定起始點(diǎn),后面的每個(gè)點(diǎn)都以相臨的前一個(gè)點(diǎn)為起始點(diǎn)組成線段。 【例9-9 】使用DrawLine方法和DrawLines方法繪制直線。,矩形分為輪廓和封閉區(qū)域兩部分DrawRectangle(或DrawRectangles)用于繪制矩形的輪廓。FillRectangle(或FillRectangles)用于填充矩形的封閉區(qū)域?!纠?-10】繪制矩形方法示例。,9.
21、2.2 矩形,9.2.3 多邊形,DrawPolygon方法:繪制多邊形的輪廓FillPolygon方法:填充多邊形的封閉區(qū)域。 【例9-11】繪制多邊形示例。,9.2.4 曲線,1. DrawCurve方法用光滑的曲線把給定的點(diǎn)連接起來,常用形式有: 1) public void DrawCurve (Pen pen ,Point[] points ) 其中, Point結(jié)構(gòu)類型的數(shù)組中指明各
22、節(jié)點(diǎn),默認(rèn)彎曲強(qiáng)度為0.5。注意,數(shù)組中至少要有3個(gè)元素。 2) public void DrawCurve (Pen pen ,Point[] points,float tension ) 其中, tension指定彎曲強(qiáng)度,該值范圍為0.0f~1.0f,超出此范圍會產(chǎn)生異常。當(dāng)彎曲強(qiáng)度為零時(shí),就是直線。,9.2.4 曲線(續(xù)),2. DrawClosedCurve方法 通過連接數(shù)組中節(jié)點(diǎn)畫一個(gè)平滑的
23、曲線,此方法會自動把首尾節(jié)點(diǎn)連接起來構(gòu)成封閉曲線。注意數(shù)組中的節(jié)點(diǎn)至少要有3個(gè)點(diǎn)組成,默認(rèn)彎曲強(qiáng)度為0.5。 1) public void DrawClosedCurve (Pen pen ,Point[] points ) 其中,Point結(jié)構(gòu)類型的數(shù)組中指明各節(jié)點(diǎn)。 2) public void DrawClosedCurve (Pen pen ,Point[] points,float tension
24、FillMode fillmode) 其中,fillmode指明曲線封閉區(qū)域內(nèi)以何種方式填充。,9.2.4 曲線(續(xù)),3. 貝塞爾曲線 每段貝塞爾曲線由4個(gè)點(diǎn)組成,兩個(gè)端點(diǎn)(p1為起點(diǎn),p2為終點(diǎn))和兩個(gè)控制點(diǎn)(c1和c2)。曲線不經(jīng)過控制點(diǎn),但是控制點(diǎn)如同一個(gè)磁體吸引曲線,影響并引導(dǎo)曲線向某個(gè)方向拉伸。,9.2.4 曲線(續(xù)),1) DrawBezier方法:繪制一段貝塞爾曲線的,常用形式: public
25、 void DrawBezier (Pen pen ,Point pt1,Point pt2,Point pt3,Point pt4 ) 其中pt1、pt2、pt3和pt4分別指定四個(gè)點(diǎn)。2) DrawBeziers方法:繪制多段貝塞爾曲線,常用形式: public void DrawBezier (Pen pen ,Point[] points) 其中points是Point結(jié)構(gòu)的數(shù)組,第一段貝塞爾曲線由
26、點(diǎn)數(shù)組中的第1~4個(gè)點(diǎn)繪制而成。以后每段曲線只需要3個(gè)點(diǎn):2個(gè)控制點(diǎn)和一個(gè)結(jié)束點(diǎn)。前一段曲線的結(jié)束點(diǎn)會自動被用作后一段曲線的起始點(diǎn)。,9.2.4 曲線(續(xù)),【例9-12 】繪制曲線示例。,9.2.5 橢圓,1. DrawEllipse方法 1)給定橢圓左上角坐標(biāo)和橢圓的外接矩形的寬度和高度 public void DrawEllipse(Pen pen, int x, int y, int width, int he
27、ight); 其中, pen為Pen對象, x, y為橢圓左上角的坐標(biāo), width定義橢圓外接矩形的寬度, height定義橢圓外接矩形的高度。 2)給定橢圓外接矩形的結(jié)構(gòu) public void DrawEllipse(Pen pen, Rectangle rect); 其中,rect為Rectangle結(jié)構(gòu),用于確定橢圓的邊界。,9.2.5 橢圓
28、(續(xù)),2. FillEllipse方法 1) 給定橢圓左上角坐標(biāo)和橢圓的外接矩形的寬度和高度 public void FillEllipse( Brush brush, int x, int y, int width, int height); 其中,x, y為橢圓左上角的坐標(biāo),width定義橢圓外接矩形的寬度,height定義橢圓外接矩形的高度。 2) 給定橢圓外接矩形的結(jié)構(gòu)
29、public void FillEllipse(Brush brush, Rectangle rect); 其中,rect為Rectangle結(jié)構(gòu),用于確定橢圓的邊界。,9.2.5 橢圓(續(xù)),【例9-13 】繪制橢圓示例。,9.2.6 扇形(續(xù)),1. DrawPie方法 1) public void Drawpie(Pen pen, int x, int y, int width, int height, int
30、startAngle, int sweepAngle); 其中, pen為Pen對象, x, y為橢圓左上角的坐標(biāo), width定義扇形外接矩形的寬度, height定義扇形外接矩形的高度, startAngle為起始角度(以度為單位), sweepAngle為延伸角度。 2) public void DrawPie(Pen pen, Rectangle rec
31、t, float startAngle, float sweepAngle); 其中,rect為Rectangle結(jié)構(gòu),用于確定扇形的外接矩形。,9.2.6 扇形(續(xù)),2. FillPie方法 1)public void FillPie(Brush brush, int x, int y, int width, int height, int startAngle, int sweepAngle); 其
32、中, brush為SolidBrush對象,x, y為橢圓左上角的坐標(biāo),width定義扇形外接矩形的寬度,height定義扇形外接矩形的高度,startAngle為起始角度(以度為單位),sweepAngle為延伸角度。 2)public void FillPie(Brush brush, Rectangle rect, float startAngle, float sweepAngle); 其中,rect
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圖形圖像處理matlab
- 圖形圖像處理圖像分割
- 單元七圖形圖像處理
- ps圖形圖像處理教案
- ps圖形圖像處理教案
- 第八章圖形圖像處理
- 基于二維條形碼的圖形圖像處理與應(yīng)用研究.pdf
- 多媒體課件圖形圖像處理
- 圖形圖像處理教學(xué)大綱
- 文本顯示與圖形圖像處理
- 圖形圖像處理課程設(shè)計(jì)報(bào)告
- 圖形圖像處理的梯度場算法.pdf
- 任務(wù)3(新)photoshop 圖形圖像處理技術(shù)
- 地質(zhì)系 《圖形圖像處理》 教學(xué)大綱
- 圖形圖像處理綜合課程設(shè)計(jì)題目
- 任務(wù)photoshop 圖形圖像處理技術(shù)5(新)
- photoshopcs圖形圖像處理理論教學(xué)大綱
- 任務(wù)4photoshop 圖形圖像處理技術(shù)(新)
- 第二單元《圖形圖像處理》課件 高中信息技術(shù)
- photoshopcs4圖形圖像處理教程復(fù)習(xí)資料
評論
0/150
提交評論