版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025河南新鄉(xiāng)封丘縣建勛學(xué)校招聘考試筆試參考題庫(kù)附答案解析
- 深度解析(2026)《GBT 26879-2025糧油儲(chǔ)藏 平房倉(cāng)隔熱技術(shù)規(guī)范》(2026年)深度解析
- 2025年中國(guó)太平洋財(cái)產(chǎn)保險(xiǎn)股份有限公司定西中心支公司招聘參考筆試題庫(kù)附答案解析
- 2025江西撫州市市屬國(guó)有企業(yè)招聘員工市國(guó)威安保服務(wù)有限公司押運(yùn)員體能測(cè)評(píng)參考考試題庫(kù)及答案解析
- 深度解析(2026)《GBT 25836-2010微量硬度快速測(cè)定方法》(2026年)深度解析
- 2025江蘇蘇州交投建設(shè)管理有限公司招聘10人備考筆試題庫(kù)及答案解析
- 2025寧夏閩寧鄉(xiāng)村振興培訓(xùn)中心招聘2人參考考試試題及答案解析
- 2026江西銅業(yè)建設(shè)監(jiān)理咨詢有限公司社會(huì)招聘1人參考筆試題庫(kù)附答案解析
- 2025金華義烏市屬國(guó)有企業(yè)解說(shuō)員公開(kāi)招聘6人參考筆試題庫(kù)附答案解析
- 2025云南昆明市團(tuán)結(jié)街道辦事處招聘公益性崗位人員2人參考筆試題庫(kù)附答案解析
- 2025年低碳供熱技術(shù)價(jià)格機(jī)制研究報(bào)告-以居民熱價(jià)為例-自然資源保護(hù)協(xié)會(huì)
- 快遞網(wǎng)點(diǎn)裝修實(shí)施方案
- 鄂倫春旗政務(wù)服務(wù)中心綜合窗口工作人員招聘?jìng)淇伎荚囶}庫(kù)附答案解析
- 裝載機(jī)管理辦法及制度
- 地鐵保安考試題庫(kù)及答案
- 2025佛山農(nóng)商銀行社會(huì)招聘考試備考題庫(kù)及答案解析
- 中醫(yī)基礎(chǔ)學(xué)考試題(附答案)
- 六分鐘步行試驗(yàn)臨床規(guī)范應(yīng)用中國(guó)專家共識(shí)解讀
- 鍋莊舞教學(xué)課件
- 混合性認(rèn)知障礙診治專家共識(shí)解讀課件
- 統(tǒng)編版語(yǔ)文二年級(jí)上冊(cè) 語(yǔ)文園地七教學(xué)課件
評(píng)論
0/150
提交評(píng)論