版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第1部分
第9章二維圖形圖像處理9.1GDI+概述9.2繪制基本圖形9.3圖像處理9.1GDI+概述
GDI+:GraphicsDeviceInterface(圖形設(shè)備接口),它提供了高級圖形圖像處理功能在C#中,通過一套部署為托管代碼的類來展現(xiàn)提供的圖形圖像處理功能,這套類被稱為GDI+的托管類。利用GDI+的托管類可以輕松實現(xiàn)顏色漸變、透明處理、紋理處理、拉伸和縮放等多種高級功能。GDI+主要提供了三類服務:1.二維矢量圖形處理2.二維圖像處理3.文字顯示在C#中,所有圖形圖像處理功能都包含在以下名稱空間下:1.System.Drawing名稱空間
提供了對GDI+基本圖形功能的訪問,主要有Graphics類Bitmap類、從Brush類繼承的類、Font類、Icon類、Image類、Pen類、Color類等。2.System.Drawing.Drawing2D名稱空間
提供了高級的二維和矢量圖形處理功能。主要有:梯度型畫刷、Matrix類(用于定義幾何變換)和GraphicsPath類等。3.System.Drawing.Imaging名稱空間
提供了高級
圖像處理功能。
4.System.Drawing.Text名稱空間提供了高級
字體和文本排版功能
9.1GDI+概述(續(xù))2.通過當前窗體的CreateGraphics方法,把當前窗體的畫筆、字體、顏色作為默認值,獲取對Graphics對象的引用。例如:
Graphicsg=this.CreateGraphics();……3.從繼承自圖像的任何對象創(chuàng)建Graphics對象,例如:BitmapmyBitmap=newBitmap(@"C:\mytest1\Pics\myPic.bmp");Graphicsg=Graphics.FromImage(myBitmap);9.1.2Graphics類(續(xù))9.1.3顏色
顏色封裝在System.Drawing.Color結(jié)構(gòu)中。人眼可以分辨的任何顏色都是由一定的紅、綠、藍三色光組成。任何一種顏色都可以有四個分量:R:紅色,取值范圍0~255,0表示沒有紅色成分,255為飽和紅色;G:綠色,取值范圍0~255,0表示沒有綠色成分,255為飽和綠色;B:藍色,取值范圍0~255,0表示沒有藍色成分,255為飽和藍色;A:Alpha值,即透明度,取值范圍0~255,0表示完全透明,255表示完全不透明。
在代碼中聲明顏色的方式常用有兩種:
1.調(diào)用靜態(tài)方法Color.FromArgb()指定任意顏色,這種方法有兩種常用形式。第一種形式為直接指定三種顏色,方法原型為:PublicstaticColorFromArgb(intred,intgreen,intblue);三個參數(shù)分別表示R、G、B三色,Alpha值使用默認值255,即完全不透明。例如:Colorred=Color.FromArgb(255,0,0);第二種形式為四個參數(shù),方法原型為:PublicstaticColorFromArgb(intalpha,intred,intgreen,intblue);四個參數(shù)分別表示透明度、R、G、B三色值。9.1.3顏色(續(xù))9.1.4畫筆和畫刷
畫筆(Pen)
畫筆可用于繪制繪制具有指定寬度和樣式的直線、曲線或輪廓形狀。下面的示例說明如何創(chuàng)建一支基本的藍色畫筆:PenmyPen=newPen(Color.Blue);PenmyPen=newPen(Color.Blue,10.5f);也可以從畫刷對象創(chuàng)建畫筆對象,例如:SolidBrushmyBrush=newSolidBrush(Color.Red);PenmyPen=newPen(myBrush);PenmyPen=newPen(myBrush,5);【例9-2】畫筆(Pen)的用法。9.1.4畫筆和畫刷(續(xù))畫刷(Brush)
畫刷是可以與Graphics對象一起使用來創(chuàng)建實心形狀和呈現(xiàn)文本的對象??梢杂脕硖畛涓鞣N圖形形狀,如矩形、橢圓、餅型圖和多邊形等。下表列出了幾種不同類型的畫刷。類說明SolidBrush用純色填充圖形TextureBrush用基于光柵的圖像(位圖、JPG等)填充圖形LinearBradientBrush用顏色漸變填充圖形PathGradientBrush用漸變效果填充圖形HatchBrush用各種圖案填充圖形1)使用SolidBrush類定義單色畫刷
SolidBrush類用于定義單色畫刷。該類可以填充圖形,比如矩形、橢圓、多邊形和路徑?!纠?-3】單色畫刷演示示例。9.1.4畫筆和畫刷(續(xù))運行結(jié)果如右圖所示:3)使用TextureBrush類填充復雜圖像
TextureBrush類使用圖像作為填充的樣式,它可以使用例如.bmp、.jpg、.png等格式的圖像。初始化一個新的TextureBrush對象需要指定填充的圖像。
【例9-5】創(chuàng)建TextureBrush示例。運行效果:9.1.4畫筆和畫刷(續(xù))4)使用LinearGradientBrush類定義線性漸變LinearGradientBrush對象用顏色線性漸變填充圖形。提供了以下三種構(gòu)造函數(shù):(1)提供兩個點和兩種顏色。PublicLinearGradientBrush(Pointpoint1,Pointpoint2,Colorcolor1,Colorcolor2)(2)提供一個矩形和一個角度。PublicLinearGradientBrush(Rectanglerect,Colorcolor1,Colorcolor2,floatangle)(3)指定漸變的模式。PublicLinearGradientBrush(Rectanglerect,Colorcolor1,Colorcolor2,LinearGradientModelinearGradientMode)
9.1.4畫筆和畫刷(續(xù))【例9-6】使用點描述線性漸變。運行效果:【例9-7】使用矩形描述線性漸變。運行效果:9.1.4畫筆和畫刷(續(xù))9.2繪制基本圖形
所有繪制圖形的方法都位于Graphics中。9.2.1直線DrawLine方法:繪制一條直線,常用形式:1)繪制一條連接指定兩個Point結(jié)構(gòu)的線。publicvoidDrawLine(Penpen,Pointpt1,Pointpt2)其中,Pen對象確定線條的顏色、寬度和樣式;Point結(jié)構(gòu)確定起點和終點。2)繪制一條由坐標對指定的兩個點的線。publicvoidDrawLine(Penpen,intx1,inty1,intx2,inty2)其中,Pen對象確定線條的顏色、寬度和樣式;x1,y1為起點坐標,x2,y2為終點坐標。
9.2.1直線(續(xù))DrawLines方法:繪制一系列點組成的線。常用形式:publicvoidDrawLines(Penpen,Point[]points)其中,Pen對象確定線條的顏色、寬度和樣式;數(shù)組中的第一個點指定起始點,后面的每個點都以相臨的前一個點為起始點組成線段?!纠?-9】使用DrawLine方法和DrawLines方法繪制直線。矩形分為輪廓和封閉區(qū)域兩部分DrawRectangle(或DrawRectangles)用于繪制矩形的輪廓。FillRectangle(或FillRectangles)用于填充矩形的封閉區(qū)域?!纠?-10】繪制矩形方法示例。9.2.2矩形9.2.4曲線1.DrawCurve方法
用光滑的曲線把給定的點連接起來,常用形式有:1)publicvoidDrawCurve(Penpen,Point[]points)其中,Point結(jié)構(gòu)類型的數(shù)組中指明各節(jié)點,默認彎曲強度為0.5。注意,數(shù)組中至少要有3個元素。2)publicvoidDrawCurve(Penpen,Point[]points,floattension)其中,tension指定彎曲強度,該值范圍為0.0f~1.0f,超出此范圍會產(chǎn)生異常。當彎曲強度為零時,就是直線。9.2.4曲線(續(xù))2.DrawClosedCurve方法通過連接數(shù)組中節(jié)點畫一個平滑的曲線,此方法會自動把首尾節(jié)點連接起來構(gòu)成封閉曲線。注意數(shù)組中的節(jié)點至少要有3個點組成,默認彎曲強度為0.5。1)publicvoidDrawClosedCurve(Penpen,Point[]points)其中,Point結(jié)構(gòu)類型的數(shù)組中指明各節(jié)點。2)publicvoidDrawClosedCurve(Penpen,Point[]points,floattensionFillModefillmode)其中,fillmode指明曲線封閉區(qū)域內(nèi)以何種方式填充。9.2.4曲線(續(xù))3.貝塞爾曲線每段貝塞爾曲線由4個點組成,兩個端點(p1為起點,p2為終點)和兩個控制點(c1和c2)。曲線不經(jīng)過控制點,但是控制點如同一個磁體吸引曲線,影響并引導曲線向某個方向拉伸。9.2.4曲線(續(xù))【例9-12】繪制曲線示例。9.2.5橢圓1.DrawEllipse方法1)給定橢圓左上角坐標和橢圓的外接矩形的寬度和高度publicvoidDrawEllipse(Penpen,intx,inty,intwidth,intheight);其中,pen為Pen對象,x,y為橢圓左上角的坐標,width定義橢圓外接矩形的寬度,height定義橢圓外接矩形的高度。2)給定橢圓外接矩形的結(jié)構(gòu)publicvoidDrawEllipse(Penpen,Rectanglerect);其中,rect為Rectangle結(jié)構(gòu),用于確定橢圓的邊界。9.2.6扇形(續(xù))1.DrawPie方法1)publicvoidDrawpie(Penpen,intx,inty,intwidth,intheight,intstartAngle,intsweepAngle);其中,pen為Pen對象,x,y為橢圓左上角的坐標,width定義扇形外接矩形的寬度,height定義扇形外接矩形的高度,startAngle為起始角度(以度為單位),sweepAngle為延伸角度。2)publicvoidDrawPie(Penpen,Rectanglerect,floatstartAngle,floatsweepAngle);其中,rect為Rectangle結(jié)構(gòu),用于確定扇形的外接矩形。9.2.6扇形(續(xù))2.FillPie方法1)publicvoidFillPie(Brushbrush,intx,inty,intwidth,intheight,intstartAngle,intsweepAngl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《奶制品培訓資料》課件
- 《小王子英文》課件
- 《企業(yè)管理概論》課件
- 2024年雷電頌教案
- 尖子生家長會發(fā)言稿
- 單位管理制度匯編大合集【人員管理篇】十篇
- 單位管理制度合并匯編職工管理
- 單位管理制度分享大全【職員管理篇】
- 單位管理制度范文大合集人力資源管理十篇
- 單位管理制度范例合集【職工管理】十篇
- 《國家課程建設(shè)》課件
- 養(yǎng)老機構(gòu)安全隱患排查清單、自查表、治理整改臺賬
- 少數(shù)民族小學生良好行為習慣養(yǎng)成的內(nèi)需與外趨的研究課題
- 毛坯房驗房專用表格詳細
- 江西省特種作業(yè)人員體檢表(共1頁)
- 幼兒園大班主題《我自己》個別化學習
- 派出所立體化勤務指揮室建設(shè)模式探析――以大連市公
- 物資設(shè)備部工作述職報告
- 精品資料(2021-2022年收藏)龍門吊軌道基礎(chǔ)施工方案
- 畫廊與畫家合作協(xié)議書范本
- 全口義齒-印模與模型-課件PPT
評論
0/150
提交評論