c 二維圖形圖像處理_第1頁(yè)
c 二維圖形圖像處理_第2頁(yè)
c 二維圖形圖像處理_第3頁(yè)
c 二維圖形圖像處理_第4頁(yè)
c 二維圖形圖像處理_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

會(huì)計(jì)學(xué)1c二維圖形圖像處理9.1GDI+概述

GDI+:GraphicsDeviceInterface(圖形設(shè)備接口),它提供了高級(jí)圖形圖像處理功能在C#中,通過(guò)一套部署為托管代碼的類來(lái)展現(xiàn)提供的圖形圖像處理功能,這套類被稱為GDI+的托管類。利用

GDI+的托管類可以輕松實(shí)現(xiàn)顏色漸變、透明處理、紋理處理、拉伸和縮放等多種高級(jí)功能。

GDI+主要提供了三類服務(wù):

1.二維矢量圖形處理

2.二維圖像處理

3.文字顯示第1頁(yè)/共31頁(yè)在C#中,所有圖形圖像處理功能都包含在以下名稱空間下:1.System.Drawing名稱空間

提供了對(duì)GDI+基本圖形功能的訪問(wèn),主要有Graphics類Bitmap類、從Brush類繼承的類、Font類、Icon類、Image類、Pen類、Color類等。2.System.Drawing.Drawing2D名稱空間

提供了高級(jí)的二維和矢量圖形處理功能。主要有:梯度型畫刷、Matrix類(用于定義幾何變換)和GraphicsPath類等。3.System.Drawing.Imaging名稱空間

提供了高級(jí)

圖像處理功能。

4.System.Drawing.Text名稱空間提供了高級(jí)

字體和文本排版功能

9.1GDI+概述(續(xù))第2頁(yè)/共31頁(yè)9.1.2Graphics類

繪制圖形圖像前,首先必須創(chuàng)建Graphics對(duì)象,然后利用這個(gè)對(duì)象繪制直線、曲線、橢圓等圖形圖像。有三種常見(jiàn)的創(chuàng)建Graphics對(duì)象的方法。

1.在窗體或控件的Paint事件中獲取Graphics對(duì)象。例如:

privatevoidForm1_Paint(……){Graphicsg=e.Graphics;}第3頁(yè)/共31頁(yè)2.通過(guò)當(dāng)前窗體的CreateGraphics方法,把當(dāng)前窗體的畫筆、字體、顏色作為默認(rèn)值,獲取對(duì)Graphics對(duì)象的引用。例如:

Graphicsg=this.CreateGraphics();……3.從繼承自圖像的任何對(duì)象創(chuàng)建Graphics對(duì)象,例如:

BitmapmyBitmap=newBitmap(@"C:\mytest1\Pics\myPic.bmp");Graphicsg=Graphics.FromImage(myBitmap);9.1.2Graphics類(續(xù))第4頁(yè)/共31頁(yè)9.1.3顏色

顏色封裝在System.Drawing.Color結(jié)構(gòu)中。人眼可以分辨的任何顏色都是由一定的紅、綠、藍(lán)三色光組成。任何一種顏色都可以有四個(gè)分量:R:紅色,取值范圍0~255,0表示沒(méi)有紅色成分,255為飽和紅色;G:綠色,取值范圍0~255,0表示沒(méi)有綠色成分,255為飽和綠色;B:藍(lán)色,取值范圍0~255,0表示沒(méi)有藍(lán)色成分,255為飽和藍(lán)色;A:Alpha值,即透明度,取值范圍0~255,0表示完全透明,255表示完全不透明。第5頁(yè)/共31頁(yè)

在代碼中聲明顏色的方式常用有兩種:

1.調(diào)用靜態(tài)方法Color.FromArgb()指定任意顏色,這種方法有兩種常用形式。第一種形式為直接指定三種顏色,方法原型為:

PublicstaticColorFromArgb(intred,intgreen,intblue);三個(gè)參數(shù)分別表示R、G、B三色,Alpha值使用默認(rèn)值255,即完全不透明。例如:

Colorred=Color.FromArgb(255,0,0);第二種形式為四個(gè)參數(shù),方法原型為:

PublicstaticColorFromArgb(intalpha,intred,intgreen,intblue);四個(gè)參數(shù)分別表示透明度、R、G、B三色值。9.1.3顏色(續(xù))第6頁(yè)/共31頁(yè)2.系統(tǒng)預(yù)定義顏色

System.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ù))第7頁(yè)/共31頁(yè)9.1.4畫筆和畫刷

畫筆(Pen)

畫筆可用于繪制繪制具有指定寬度和樣式的直線、曲線或輪廓形狀。下面的示例說(shuō)明如何創(chuàng)建一支基本的藍(lán)色畫筆:

PenmyPen=newPen(Color.Blue);

PenmyPen=newPen(Color.Blue,10.5f);也可以從畫刷對(duì)象創(chuàng)建畫筆對(duì)象,例如:

SolidBrushmyBrush=newSolidBrush(Color.Red);

PenmyPen=newPen(myBrush);

PenmyPen=newPen(myBrush,5);

【例9-2】畫筆(Pen)的用法。第8頁(yè)/共31頁(yè)9.1.4畫筆和畫刷(續(xù))畫刷(Brush)

畫刷是可以與Graphics對(duì)象一起使用來(lái)創(chuàng)建實(shí)心形狀和呈現(xiàn)文本的對(duì)象。可以用來(lái)填充各種圖形形狀,如矩形、橢圓、餅型圖和多邊形等。下表列出了幾種不同類型的畫刷。類說(shuō)明SolidBrush用純色填充圖形TextureBrush用基于光柵的圖像(位圖、JPG等)填充圖形LinearBradientBrush用顏色漸變填充圖形PathGradientBrush用漸變效果填充圖形HatchBrush用各種圖案填充圖形第9頁(yè)/共31頁(yè)1)使用SolidBrush類定義單色畫刷

SolidBrush類用于定義單色畫刷。該類可以填充圖形,比如矩形、橢圓、多邊形和路徑?!纠?-3】單色畫刷演示示例。9.1.4畫筆和畫刷(續(xù))運(yùn)行結(jié)果如右圖所示:第10頁(yè)/共31頁(yè)2)使用HatchBrush類填充簡(jiǎn)單圖案

HatchBrush類提供的畫刷可以用各種圖案填充圖形。通過(guò)Hatch類型可以設(shè)置影線樣式。在創(chuàng)建影線的畫刷時(shí),能設(shè)定前景色、背景色和影線樣式。有56種不同的影線樣式枚舉,該枚舉可以參看System.Drawing.Drawing2D.HatchStyle枚舉?!纠?-4】填充簡(jiǎn)單圖案示例。

9.1.4畫筆和畫刷(續(xù))運(yùn)行結(jié)果如右圖所示:第11頁(yè)/共31頁(yè)3)使用TextureBrush類填充復(fù)雜圖像

TextureBrush類使用圖像作為填充的樣式,它可以使用例如.bmp、.jpg、.png等格式的圖像。初始化一個(gè)新的TextureBrush對(duì)象需要指定填充的圖像。

【例9-5】創(chuàng)建TextureBrush示例。運(yùn)行效果:9.1.4畫筆和畫刷(續(xù))第12頁(yè)/共31頁(yè)4)使用LinearGradientBrush類定義線性漸變

LinearGradientBrush對(duì)象用顏色線性漸變填充圖形。提供了以下三種構(gòu)造函數(shù):

(1)提供兩個(gè)點(diǎn)和兩種顏色。

PublicLinearGradientBrush(Pointpoint1,Pointpoint2,Colorcolor1,Colorcolor2)(2)提供一個(gè)矩形和一個(gè)角度。

PublicLinearGradientBrush(Rectanglerect,Colorcolor1,Colorcolor2,floatangle)(3)指定漸變的模式。

PublicLinearGradientBrush(Rectanglerect,Colorcolor1,Colorcolor2,LinearGradientModelinearGradientMode)

9.1.4畫筆和畫刷(續(xù))第13頁(yè)/共31頁(yè)【例9-6】使用點(diǎn)描述線性漸變。運(yùn)行效果:【例9-7】使用矩形描述線性漸變。運(yùn)行效果:9.1.4畫筆和畫刷(續(xù))第14頁(yè)/共31頁(yè)5)使用PathGradientBrush類實(shí)現(xiàn)彩色漸變?cè)贕DI+中,把一個(gè)或多個(gè)圖形組成的形體稱為路徑??梢允褂肎raphicsPath類定義路徑,使用PathGradientBrush類定義路徑內(nèi)部的漸變色畫刷。漸變色從路徑的內(nèi)部中心點(diǎn)逐漸過(guò)渡到路徑的外邊界邊緣。

PathGradientBrush類提供了三種重載的構(gòu)造函數(shù),其中常用的是通過(guò)指定路徑實(shí)現(xiàn)彩色漸變。常用形式如下:

PublicPathGradientBrush(GraphicsPathpath)【例9-8】路徑和路徑畫刷的使用示例。運(yùn)行效果:9.1.4畫筆和畫刷(續(xù))第15頁(yè)/共31頁(yè)9.2繪制基本圖形

所有繪制圖形的方法都位于Graphics中。9.2.1直線DrawLine方法:繪制一條直線,常用形式:

1)繪制一條連接指定兩個(gè)Point結(jié)構(gòu)的線。

publicvoidDrawLine(Penpen,Pointpt1,Pointpt2)

其中,Pen對(duì)象確定線條的顏色、寬度和樣式;

Point結(jié)構(gòu)確定起點(diǎn)和終點(diǎn)。

2)繪制一條由坐標(biāo)對(duì)指定的兩個(gè)點(diǎn)的線。

publicvoidDrawLine(Penpen,intx1,inty1,intx2,inty2)

其中,Pen對(duì)象確定線條的顏色、寬度和樣式;

x1,y1為起點(diǎn)坐標(biāo),x2,y2為終點(diǎn)坐標(biāo)。

第16頁(yè)/共31頁(yè)9.2.1直線(續(xù))DrawLines方法:繪制一系列點(diǎn)組成的線。常用形式:

publicvoidDrawLines(Penpen,Point[]points)

其中,Pen對(duì)象確定線條的顏色、寬度和樣式;數(shù)組中的第一個(gè)點(diǎn)指定起始點(diǎn),后面的每個(gè)點(diǎn)都以相臨的前一個(gè)點(diǎn)為起始點(diǎn)組成線段?!纠?-9】使用DrawLine方法和DrawLines方法繪制直線。第17頁(yè)/共31頁(yè)矩形分為輪廓和封閉區(qū)域兩部分DrawRectangle(或DrawRectangles)用于繪制矩形的輪廓。FillRectangle(或FillRectangles)用于填充矩形的封閉區(qū)域?!纠?-10】繪制矩形方法示例。9.2.2矩形第18頁(yè)/共31頁(yè)9.2.3多邊形DrawPolygon方法:繪制多邊形的輪廓FillPolygon方法:填充多邊形的封閉區(qū)域。

【例9-11】繪制多邊形示例。第19頁(yè)/共31頁(yè)9.2.4曲線1.DrawCurve方法

用光滑的曲線把給定的點(diǎn)連接起來(lái),常用形式有:

1)publicvoidDrawCurve(Penpen,Point[]points)

其中,

Point結(jié)構(gòu)類型的數(shù)組中指明各節(jié)點(diǎn),默認(rèn)彎曲強(qiáng)度為0.5。注意,數(shù)組中至少要有3個(gè)元素。

2)publicvoidDrawCurve(Penpen,Point[]points,floattension)

其中,

tension指定彎曲強(qiáng)度,該值范圍為0.0f~1.0f,超出此范圍會(huì)產(chǎn)生異常。當(dāng)彎曲強(qiáng)度為零時(shí),就是直線。第20頁(yè)/共31頁(yè)9.2.4曲線(續(xù))2.DrawClosedCurve方法通過(guò)連接數(shù)組中節(jié)點(diǎn)畫一個(gè)平滑的曲線,此方法會(huì)自動(dòng)把首尾節(jié)點(diǎn)連接起來(lái)構(gòu)成封閉曲線。注意數(shù)組中的節(jié)點(diǎn)至少要有3個(gè)點(diǎn)組成,默認(rèn)彎曲強(qiáng)度為0.5。

1)publicvoidDrawClosedCurve(Penpen,Point[]points)

其中,Point結(jié)構(gòu)類型的數(shù)組中指明各節(jié)點(diǎn)。

2)publicvoidDrawClosedCurve(Penpen,Point[]points,floattensionFillModefillmode)

其中,fillmode指明曲線封閉區(qū)域內(nèi)以何種方式填充。第21頁(yè)/共31頁(yè)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)過(guò)控制點(diǎn),但是控制點(diǎn)如同一個(gè)磁體吸引曲線,影響并引導(dǎo)曲線向某個(gè)方向拉伸。第22頁(yè)/共31頁(yè)9.2.4曲線(續(xù))1)DrawBezier方法:繪制一段貝塞爾曲線的,常用形式:

publicvoidDrawBezier(Penpen,Pointpt1,Pointpt2,Pointpt3,Pointpt4)

其中pt1、pt2、pt3和pt4分別指定四個(gè)點(diǎn)。2)DrawBeziers方法:繪制多段貝塞爾曲線,常用形式:

publicvoidDrawBezier(Penpen,Point[]points)

其中points是Point結(jié)構(gòu)的數(shù)組,第一段貝塞爾曲線由點(diǎn)數(shù)組中的第1~4個(gè)點(diǎn)繪制而成。以后每段曲線只需要3個(gè)點(diǎn):2個(gè)控制點(diǎn)和一個(gè)結(jié)束點(diǎn)。前一段曲線的結(jié)束點(diǎn)會(huì)自動(dòng)被用作后一段曲線的起始點(diǎn)。第23頁(yè)/共31頁(yè)9.2.4曲線(續(xù))【例9-12】繪制曲線示例。第24頁(yè)/共31頁(yè)9.2.5橢圓1.DrawEllipse方法

1)給定橢圓左上角坐標(biāo)和橢圓的外接矩形的寬度和高度

publicvoidDrawEllipse(Penpen,intx,inty,intwidth,intheight);其中,

pen為Pen對(duì)象,

x,y為橢圓左上角的坐標(biāo),

width定義橢圓外接矩形的寬度,

height定義橢圓外接矩形的高度。

2)給定橢圓外接矩形的結(jié)構(gòu)

publicvoidDrawEllipse(Penpen,Rectanglerect);其中,rect為Rectangle結(jié)構(gòu),用于確定橢圓的邊界。第25頁(yè)/共31頁(yè)9.2.5橢圓(續(xù))2.FillEllipse方法

1)給定橢圓左上角坐標(biāo)和橢圓的外接矩形的寬度和高度

publicvoidFillEllipse(Brushbrush,intx,inty,intwidth,intheight);其中,x,y為橢圓左上角的坐標(biāo),width定義橢圓外接矩形的寬度,height定義橢圓外接矩形的高度。

2)給定橢圓外接矩形的結(jié)構(gòu)

publicvoidFillEllipse(Brushbrush,Rectanglerect);其中,rect為Rectangle結(jié)構(gòu),用于確定橢圓的邊界。第26頁(yè)/共31頁(yè)9.2.5橢圓(續(xù))

【例9-13】繪制橢圓示例。第27頁(yè)/共31頁(yè)9.2.6扇形(續(xù))1.DrawPie方法

1)publicvoidDrawpie(Penpen,intx,inty,intwidth,intheight,

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論