第12-13講GDI+繪圖_第1頁(yè)
第12-13講GDI+繪圖_第2頁(yè)
第12-13講GDI+繪圖_第3頁(yè)
第12-13講GDI+繪圖_第4頁(yè)
第12-13講GDI+繪圖_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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)介

1、l掌握掌握GDI+圖文繪制的圖文繪制的技術(shù)技術(shù)l了解了解GDI+圖像處理的圖像處理的C#程序設(shè)計(jì)程序設(shè)計(jì)基礎(chǔ)基礎(chǔ) GDI(Graphics Device Interface,即,即圖形設(shè)備接口)是圖形設(shè)備接口)是 Windows API的一個(gè)重要的一個(gè)重要組成部分。而組成部分。而GDI+則是則是GDI的升級(jí)版本,它的升級(jí)版本,它在在GDI的基礎(chǔ)上做了大量的優(yōu)化、改進(jìn)。一方的基礎(chǔ)上做了大量的優(yōu)化、改進(jìn)。一方面,面,GDI+提供了一些新的功能(如漸變畫刷提供了一些新的功能(如漸變畫刷Gradient Brushes以及混合以及混合Alpha Blending等);另一方面,等);另一方面,GDI+

2、修訂了編程模式,將修訂了編程模式,將圖形硬件和應(yīng)用程序相互隔離,使得開發(fā)人員圖形硬件和應(yīng)用程序相互隔離,使得開發(fā)人員可以更加容易地編寫與設(shè)備無(wú)關(guān)的應(yīng)用程序??梢愿尤菀椎鼐帉懪c設(shè)備無(wú)關(guān)的應(yīng)用程序。GDI+主要提供以下功能:主要提供以下功能:二維矢量圖形:二維矢量圖形:GDI+提供存儲(chǔ)圖形基元自身提供存儲(chǔ)圖形基元自身信息的類(或結(jié)構(gòu))、存儲(chǔ)圖形基元繪制方信息的類(或結(jié)構(gòu))、存儲(chǔ)圖形基元繪制方式信息的類以及實(shí)際進(jìn)行繪制的類。式信息的類以及實(shí)際進(jìn)行繪制的類。圖像處理:多數(shù)圖像都難以或不可能使用矢圖像處理:多數(shù)圖像都難以或不可能使用矢量圖形表示,所以,量圖形表示,所以,GDI+提供了提供了Bitmap

3、和和Image等類,用于顯示、操作和保存等類,用于顯示、操作和保存BMP、JPEG、GIF或或PNG等格式的圖像。等格式的圖像。文本顯示:在文本顯示:在GDI+中,文本信息也是中,文本信息也是“繪制繪制”的,并且可以使用各種字體、字號(hào)以及樣的,并且可以使用各種字體、字號(hào)以及樣式。式。10.3.1 .NET圖形圖像處理命名空間圖形圖像處理命名空間 System.Drawing命名空間,提供對(duì)命名空間,提供對(duì)GDI+基本圖形功能基本圖形功能的訪問(wèn),主要有的訪問(wèn),主要有Graphics類、類、Bitmap類以及從類以及從Brush類類繼承來(lái)的繼承來(lái)的Font類、類、Image類、類、Pen類和類和C

4、olor類等。類等。 System.Drawing.Drawing2D命名空間,提供高級(jí)的二命名空間,提供高級(jí)的二維圖形和矢量圖形功能。此命名空間包含漸變畫筆、維圖形和矢量圖形功能。此命名空間包含漸變畫筆、Matrix類(用于定義幾何變換)和類(用于定義幾何變換)和GraphicsPath類。類。 System.Drawing.Imaging命名空間,提供高級(jí)命名空間,提供高級(jí)GDI+圖圖像處理功能。像處理功能。 System.Drawing.Text命名空間,提供高級(jí)命名空間,提供高級(jí)GDI+字體和字體和文本排版功能文本排版功能。10.3.2 Graphics類類對(duì)于對(duì)于GDI+繪圖,準(zhǔn)備畫

5、紙就是創(chuàng)建繪圖,準(zhǔn)備畫紙就是創(chuàng)建Graphics對(duì)對(duì)象,該對(duì)象表示當(dāng)前的繪圖界面。象,該對(duì)象表示當(dāng)前的繪圖界面。Graphics類類封裝了一個(gè)封裝了一個(gè)GDI+繪圖界面,提供將對(duì)象繪制到繪圖界面,提供將對(duì)象繪制到顯示設(shè)備的方法。顯示設(shè)備的方法??梢圆捎靡韵聨追N方式創(chuàng)建一個(gè)可以采用以下幾種方式創(chuàng)建一個(gè)Graphics對(duì)象對(duì)象。1在窗體或控件的在窗體或控件的Paint事件事件中直接引用中直接引用Graphics對(duì)象對(duì)象每個(gè)窗體或控件都有一個(gè)每個(gè)窗體或控件都有一個(gè)Paint事件,該事件事件,該事件參數(shù)中包含了當(dāng)前窗體或控件的參數(shù)中包含了當(dāng)前窗體或控件的Graphics對(duì)象對(duì)象,在為窗體或控件編寫繪圖

6、代碼時(shí),一般使用此,在為窗體或控件編寫繪圖代碼時(shí),一般使用此方法來(lái)獲取圖形對(duì)象的引用。例如:方法來(lái)獲取圖形對(duì)象的引用。例如:private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;/圖文繪制代碼圖文繪制代碼 2調(diào)用當(dāng)前窗體或控件的調(diào)用當(dāng)前窗體或控件的CreateGraphics方法方法 調(diào)用當(dāng)前窗體或控件的調(diào)用當(dāng)前窗體或控件的CreateGraphics方方法以獲取對(duì)法以獲取對(duì)Graphics對(duì)象的引用。如果要在已對(duì)象的引用。如果要在已存在的窗體或控件上繪圖,可以使用這種方法。存在的窗體或

7、控件上繪圖,可以使用這種方法。例如:例如: Graphics g = this.CreateGraphics(); /圖文繪制代碼圖文繪制代碼 3調(diào)用調(diào)用Graphics類的類的FromImage靜態(tài)方法靜態(tài)方法 調(diào)用調(diào)用Graphics類的類的FromImage靜態(tài)方法,從繼承靜態(tài)方法,從繼承自圖像的任何對(duì)象創(chuàng)建自圖像的任何對(duì)象創(chuàng)建Graphics對(duì)象,此方法通常用對(duì)象,此方法通常用于更改已存在圖像。例如:于更改已存在圖像。例如: Bitmap bitmap = new Bitmap(C:CProgameb1.bmp);Graphics g = Graphics.FromImage(bitm

8、ap); 或者:或者: Image img = Image.FromFile(g1.gif);Graphics g = Graphics.FromImage(img); 10.3.3 顏色顏色 顏色是進(jìn)行圖形操作的基本要素。任何一種顏色顏色是進(jìn)行圖形操作的基本要素。任何一種顏色的表現(xiàn)效果都可以由的表現(xiàn)效果都可以由3個(gè)色彩分量和個(gè)色彩分量和1個(gè)透明度參數(shù)來(lái)確個(gè)透明度參數(shù)來(lái)確定,每個(gè)分量占定,每個(gè)分量占1B。三原色及色彩透明度的取值設(shè)定。三原色及色彩透明度的取值設(shè)定分別如下。分別如下。R:紅色,取值范圍為:紅色,取值范圍為0255,255為飽和紅色。為飽和紅色。G:綠色,取值范圍為:綠色,取值范圍

9、為0255,255為飽和綠色。為飽和綠色。B:藍(lán)色,取值范圍為:藍(lán)色,取值范圍為0255,255為飽和藍(lán)色。為飽和藍(lán)色。A:即:即Alpha值,表示一種顏色的透明度,取值范圍為值,表示一種顏色的透明度,取值范圍為0255,0為完全透明,為完全透明,255為完全不透明。在為完全不透明。在GDI+中中,顏色封裝在,顏色封裝在Color結(jié)構(gòu)中,可用以下幾種方法創(chuàng)建顏結(jié)構(gòu)中,可用以下幾種方法創(chuàng)建顏色對(duì)象色對(duì)象。1利用利用FromArgb指定任意顏色指定任意顏色這種方法可使用這種方法可使用3個(gè)參數(shù)或個(gè)參數(shù)或4個(gè)參數(shù)兩種形式。個(gè)參數(shù)兩種形式。通過(guò)通過(guò)3個(gè)參數(shù)指定顏色的構(gòu)造函數(shù)如下:個(gè)參數(shù)指定顏色的構(gòu)造函數(shù)

10、如下:public static Color FromArgb(int red,int green,int blue);例如:例如: Color red = Color.FromArgb(255,0,0);/純紅色純紅色/純藍(lán)色(也可采用十六進(jìn)制表示)純藍(lán)色(也可采用十六進(jìn)制表示) Color rblue = Color.FromArgb(0,0, 0 xff);以上三種顏色設(shè)置中,以上三種顏色設(shè)置中,Alpha使用了默認(rèn)值使用了默認(rèn)值255,即完全不透明。,即完全不透明。通過(guò)通過(guò)4個(gè)參數(shù)指定顏色的構(gòu)造函數(shù)如下:個(gè)參數(shù)指定顏色的構(gòu)造函數(shù)如下:public static Color FromAr

11、gb(int alpha,int red,int green,int blue);例如:例如: Color red = Color.FromArgb(128,255,0,0);/半透明的半透明的純紅色純紅色。2直接使用系統(tǒng)預(yù)定義的顏色直接使用系統(tǒng)預(yù)定義的顏色在在Color結(jié)構(gòu)中已經(jīng)預(yù)定義了結(jié)構(gòu)中已經(jīng)預(yù)定義了141種顏色,種顏色,可以直接使用。例如:可以直接使用。例如:Color myColor; MyColor = myColor.Red; /紅色紅色MyColor = myColor.Brown;/棕色棕色10.3.4 坐標(biāo)系統(tǒng)坐標(biāo)系統(tǒng)GDI+使用使用Point、Size和和Rectangl

12、e結(jié)構(gòu)來(lái)進(jìn)行繪圖時(shí)的坐標(biāo)定位結(jié)構(gòu)來(lái)進(jìn)行繪圖時(shí)的坐標(biāo)定位和尺寸確定。和尺寸確定。uPoint結(jié)構(gòu)結(jié)構(gòu) GDI+的的Point表示一個(gè)二維平面上的點(diǎn),可以使用一些公共表示一個(gè)二維平面上的點(diǎn),可以使用一些公共屬性獲取或設(shè)置屬性獲取或設(shè)置Point的的X和和Y坐標(biāo)。聲明和構(gòu)造坐標(biāo)。聲明和構(gòu)造Point的示例代的示例代碼如下:碼如下: Point p = new Point(85,100);uSize結(jié)構(gòu)結(jié)構(gòu) GDI+使用使用Size表示一個(gè)尺寸(單位:像素),表示一個(gè)尺寸(單位:像素),Size結(jié)構(gòu)包結(jié)構(gòu)包含寬度和高度兩個(gè)參數(shù)。可以使用一些公共屬性獲取或設(shè)置含寬度和高度兩個(gè)參數(shù)。可以使用一些公共屬性獲

13、取或設(shè)置Point的的X坐標(biāo)和坐標(biāo)和Y坐標(biāo)。聲明和構(gòu)造坐標(biāo)。聲明和構(gòu)造Size的示例代碼如下:的示例代碼如下: Size s = new Size(50,80);n Rectangle結(jié)構(gòu)結(jié)構(gòu) Rectangle可以采用兩種構(gòu)造函數(shù),一種是指定可以采用兩種構(gòu)造函數(shù),一種是指定矩形左上角的矩形左上角的X和和Y坐標(biāo)以及矩形的寬和高,聲明和構(gòu)坐標(biāo)以及矩形的寬和高,聲明和構(gòu)造造Rectangle示例代碼如下:示例代碼如下: Rectangle rct = new Rectangle(10,20,150,300); 另外,另外,Rectangle也可以結(jié)合運(yùn)用也可以結(jié)合運(yùn)用Point和和Size這兩這兩

14、個(gè)結(jié)構(gòu),例如以上的示例,也可采用以下代碼實(shí)現(xiàn):個(gè)結(jié)構(gòu),例如以上的示例,也可采用以下代碼實(shí)現(xiàn): Point p = new Point(10,20); Size s = new Size(150,300); Rectangle rct = new Rectangle(p,s);10.3.5 畫筆與畫刷畫筆與畫刷在在GDI+中則將其繪圖的工具分為筆和畫刷兩種。中則將其繪圖的工具分為筆和畫刷兩種。筆是筆是Pen類的實(shí)例,用于繪制線條或空心圖形。通過(guò)筆的類的實(shí)例,用于繪制線條或空心圖形。通過(guò)筆的With屬性可以設(shè)置其寬度,屬性可以設(shè)置其寬度,Color屬性可以設(shè)置其顏色屬性可以設(shè)置其顏色,StartC

15、ap和和EndCap屬性設(shè)置其起點(diǎn)或終點(diǎn)的樣式,屬性設(shè)置其起點(diǎn)或終點(diǎn)的樣式,DashStyle屬性則可以設(shè)置其線樣式,如實(shí)線、虛線或?qū)傩詣t可以設(shè)置其線樣式,如實(shí)線、虛線或點(diǎn)劃線等。點(diǎn)劃線等。實(shí)例化筆對(duì)象代碼如下:實(shí)例化筆對(duì)象代碼如下: Pen pen1 = new Pen(Color.Red);/1個(gè)像素寬的紅色筆個(gè)像素寬的紅色筆Pen pen2 = new Pen(Color.Black,5);/5個(gè)像素寬的黑個(gè)像素寬的黑色筆色筆也可以從畫刷(詳見畫刷介紹)對(duì)象實(shí)例化筆,示例代碼如下:也可以從畫刷(詳見畫刷介紹)對(duì)象實(shí)例化筆,示例代碼如下: /1個(gè)像素寬的紅色畫刷個(gè)像素寬的紅色畫刷 Soli

16、dBrush brush1 = new SolidBrush (Color.Red); Pen pen1 = new Pen(brush1); /1個(gè)像素寬的紅色筆個(gè)像素寬的紅色筆 Pen pen2 = new Pen(brush1,5);/5個(gè)像素寬的紅色筆個(gè)像素寬的紅色筆 畫刷(畫刷(Brush) 畫刷是從畫刷是從Brush類派生的任何類的實(shí)例,可與類派生的任何類的實(shí)例,可與Graphics對(duì)象一起使用來(lái)創(chuàng)建實(shí)心圖形或呈現(xiàn)文本對(duì)象。還可以用于填對(duì)象一起使用來(lái)創(chuàng)建實(shí)心圖形或呈現(xiàn)文本對(duì)象。還可以用于填充各種圖形,如矩形、橢圓或多邊形等。充各種圖形,如矩形、橢圓或多邊形等。 實(shí)例化畫刷對(duì)象的方法

17、與實(shí)例化筆對(duì)象類似實(shí)例化畫刷對(duì)象的方法與實(shí)例化筆對(duì)象類似。10.4.1 繪制直線繪制直線 GDI+中有兩種繪制直線的方法:中有兩種繪制直線的方法:DrawLine()方法和方法和DrawLines()方法。前者方法。前者一次只繪制一條直線,后者一次可繪制多一次只繪制一條直線,后者一次可繪制多條直線。條直線。 (1)先定義一對(duì)坐標(biāo)點(diǎn),再將其作為)先定義一對(duì)坐標(biāo)點(diǎn),再將其作為起點(diǎn)和終點(diǎn)進(jìn)行劃線。其構(gòu)造函數(shù)如下:起點(diǎn)和終點(diǎn)進(jìn)行劃線。其構(gòu)造函數(shù)如下: public void DrawLine(Pen pen,Point startPoint,Point endPoint);示例代碼如下:示例代碼如下:

18、 private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;Pen pen = new Pen(Color.Blue,3);Point startPoint = new Point(20,20);Point endPoint = new Point(200,90);g.DrawLine(pen,startPoint,endPoint); (2)直接定義一對(duì)起點(diǎn)和終點(diǎn)坐標(biāo)并進(jìn)行劃線。其構(gòu)造)直接定義一對(duì)起點(diǎn)和終點(diǎn)坐標(biāo)并進(jìn)行劃線。其構(gòu)造函數(shù)如下:函數(shù)如下:public void DrawLine

19、(Pen pen, nt x1, int x2, int y1, int y2);則以上示例代碼可改寫如下:則以上示例代碼可改寫如下: private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;Pen pen = new Pen(Color.Blue,3);g.DrawLine(pen,20,20,200,90);3)定義多對(duì)坐標(biāo)點(diǎn),再將它們作為首尾相連的起始點(diǎn)連接劃線。其構(gòu)造)定義多對(duì)坐標(biāo)點(diǎn),再將它們作為首尾相連的起始點(diǎn)連接劃線。其構(gòu)造函數(shù)如下:函數(shù)如下:public void DrawL

20、ine(Pen pen, Point points);示例代碼如下:示例代碼如下: private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;Pen pen = new Pen(Color.Red,2);Point points =new Point(15,20),new Point(30,120),new Point(100,180),new Point(260,50);g.DrawLines(pen, points); 10.4.2 繪制多邊形繪制多邊形 多邊形既有輪廓又是封閉的,所以,

21、多邊形既有輪廓又是封閉的,所以,可以將多邊形劃分為空心多邊形和實(shí)心多可以將多邊形劃分為空心多邊形和實(shí)心多邊形(有填充)兩種。邊形(有填充)兩種。GDI+中與之對(duì)應(yīng)的中與之對(duì)應(yīng)的繪圖方法分別為繪圖方法分別為DrawPolygon()方法和方法和FillPolygon()方法。不過(guò)要注意,方法。不過(guò)要注意,DrawPolygon()方法需使用筆,方法需使用筆,F(xiàn)illPolygon()方法需使用畫刷,這樣才可方法需使用畫刷,這樣才可分別繪制空心或?qū)嵭牡亩噙呅?。分別繪制空心或?qū)嵭牡亩噙呅巍J纠a如下:示例代碼如下: private void Form1_Paint(object sender, P

22、aintEventArgs e) Graphics g = e.Graphics;Pen pen = new Pen(Color.Blue,2);Point points1 =new Point(70,20),new Point(20,130),new Point(120,130) ;g.DrawPolygon(pen, points1);Brush brush = new SolidBrush(Color.Red);Point points2 =new Point(210,20),new Point(160,130),new Point(260,130);g.FillPolygon(brus

23、h, points2); 10.4.3 繪制曲線繪制曲線 GDI+中可以分別使用中可以分別使用DrawCurve()方法和方法和DrawClosedCurve()方法繪制自定義的開口曲線和封閉曲線;方法繪制自定義的開口曲線和封閉曲線;還可以使用還可以使用DrawBezier()方法繪制一段或多段貝塞爾曲線。自定方法繪制一段或多段貝塞爾曲線。自定義曲線的繪制可用如下兩種構(gòu)造函數(shù)。義曲線的繪制可用如下兩種構(gòu)造函數(shù)。 (1)使用默認(rèn)彎曲強(qiáng)度)使用默認(rèn)彎曲強(qiáng)度0.5進(jìn)行繪圖。其構(gòu)造函數(shù)如下:進(jìn)行繪圖。其構(gòu)造函數(shù)如下:public void DrawCurve(Pen pen, Point points

24、); (2)指定彎曲強(qiáng)度進(jìn)行繪圖。其構(gòu)造函數(shù)如下:)指定彎曲強(qiáng)度進(jìn)行繪圖。其構(gòu)造函數(shù)如下:public void DrawCurve(Pen pen, Point points,float tension); 其中,其中,tension參數(shù)指定彎曲強(qiáng)度,取值范圍為參數(shù)指定彎曲強(qiáng)度,取值范圍為0.01.0f,超,超出其范圍將產(chǎn)生異常,取值為出其范圍將產(chǎn)生異常,取值為0時(shí),繪制直線。時(shí),繪制直線。private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;Pen pen1 = new Pen(Co

25、lor.Blue,2);Point points1 =new Point(20,140),new Point(60,10),new Point(100,130),new Point(140,20),new Point(180,130),new Point(220,30),new Point(260,120);g.DrawCurve(pen1, points1, 0f);Pen pen2 = new Pen(Color.Red, 2);Point points2 =new Point(20,140),new Point(60,10),new Point(100,130),new Point(14

26、0,20),new Point(180,130),new Point(220,30),new Point(260,120) ;g.DrawCurve(pen2, points2, 0.6f); 10.4.4 繪制矩形繪制矩形 由于矩形也是既有輪廓且封閉,所以也可將其劃分為空心矩形和由于矩形也是既有輪廓且封閉,所以也可將其劃分為空心矩形和實(shí)心(有填充)矩形兩種。實(shí)心(有填充)矩形兩種。GDI+中與之對(duì)應(yīng)的繪圖方法分別為中與之對(duì)應(yīng)的繪圖方法分別為DrawRectangle()方法(或方法(或DrawRectangles)和)和FillRectangle()方法方法(或(或FillRectangle

27、s)。同樣需要注意,輪廓方法需使用筆,填充方)。同樣需要注意,輪廓方法需使用筆,填充方法需使用畫刷。繪制空心矩形可用如下法需使用畫刷。繪制空心矩形可用如下3種構(gòu)造函數(shù)。種構(gòu)造函數(shù)。 (1)利用)利用Rectangle結(jié)構(gòu)確定矩形的邊界,一次繪制一個(gè)矩形。其結(jié)構(gòu)確定矩形的邊界,一次繪制一個(gè)矩形。其構(gòu)造函數(shù)如下:構(gòu)造函數(shù)如下: public void DrawRectangle(Pen pen, Rectangle rect); (2)指定矩形的寬和高及其左上角坐標(biāo)。其構(gòu)造函數(shù)如下:)指定矩形的寬和高及其左上角坐標(biāo)。其構(gòu)造函數(shù)如下: public void DrawRectangle(Pen pe

28、n, int x, int y, int width, int height); (3)利用)利用Rectangle結(jié)構(gòu)確定矩形邊界,且一次可繪制多個(gè)矩形。結(jié)構(gòu)確定矩形邊界,且一次可繪制多個(gè)矩形。 其構(gòu)造函數(shù)如下:其構(gòu)造函數(shù)如下: public void DrawRectangles(Pen pen, Rectangle rects);繪制空心矩形和實(shí)心矩形的示例代碼如下:繪制空心矩形和實(shí)心矩形的示例代碼如下:private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;Pen pen = ne

29、w Pen(Color.Blue, 2);g.DrawRectangle(pen, 20, 20, 80, 100);Brush brush = new SolidBrush(Color.Red);g.FillRectangle(brush, 170, 20, 80, 100); 10.4.5 繪制橢圓(或圓)繪制橢圓(或圓) 由于橢圓(或圓)也是既有輪廓且封閉,所以,也可將其由于橢圓(或圓)也是既有輪廓且封閉,所以,也可將其劃分為空心橢圓(或圓)和實(shí)心(有填充)橢圓(或圓)兩劃分為空心橢圓(或圓)和實(shí)心(有填充)橢圓(或圓)兩種。種。GDI+中與之對(duì)應(yīng)的繪圖方法分別為中與之對(duì)應(yīng)的繪圖方法分別

30、為DrawEllipse()方法和方法和FillEllipse()方法。繪制空心橢圓(或圓)可用如下兩種構(gòu)造方法。繪制空心橢圓(或圓)可用如下兩種構(gòu)造函數(shù)。函數(shù)。 (1)利用)利用Rectangle結(jié)構(gòu)確定繪圖邊界,繪制一個(gè)橢圓結(jié)構(gòu)確定繪圖邊界,繪制一個(gè)橢圓(或圓)。其構(gòu)造函數(shù)如下:(或圓)。其構(gòu)造函數(shù)如下: public void DrawEllipse(Pen pen, Rectangle rect); (2)指定橢圓(或圓)的寬和高及左上角坐標(biāo)。其構(gòu)造)指定橢圓(或圓)的寬和高及左上角坐標(biāo)。其構(gòu)造函數(shù):函數(shù): public void DrawEllipse (Pen pen, int x

31、, int y, int width, int height);繪制空心圓和實(shí)心橢圓的示例代碼如下:繪制空心圓和實(shí)心橢圓的示例代碼如下:private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;Pen pen = new Pen(Color.Blue, 2);g.DrawEllipse(pen, 20, 20, 120, 80);Brush brush = new SolidBrush(Color.Red);g.FillEllipse(brush, 180, 20, 80, 80); 10.

32、4.6 繪制圓弧繪制圓弧GDI+中通過(guò)調(diào)用中通過(guò)調(diào)用DrawArc()方法來(lái)繪制一段圓弧。繪制圓方法來(lái)繪制一段圓弧。繪制圓弧可用如下兩種構(gòu)造函數(shù)?;】捎萌缦聝煞N構(gòu)造函數(shù)。(1)利用)利用Rectangle結(jié)構(gòu)確定圓弧的范圍。其構(gòu)造函數(shù)如下:結(jié)構(gòu)確定圓弧的范圍。其構(gòu)造函數(shù)如下:public void DrawArc(Pen pen, Rectangle rect, int startAngle, int sweepAngle);其中,其中,startAngle表示從表示從x軸到弧線的起始點(diǎn)沿著順時(shí)針的軸到弧線的起始點(diǎn)沿著順時(shí)針的方向度量的角度(以度為單位);方向度量的角度(以度為單位);swee

33、pAngle表示從表示從startAngle到弧線的結(jié)束點(diǎn)沿著順時(shí)的針?lè)较蚨攘康慕嵌龋ㄒ缘交【€的結(jié)束點(diǎn)沿著順時(shí)的針?lè)较蚨攘康慕嵌龋ㄒ远葹閱挝唬?。度為單位)。?)指定圓弧的寬和高及其左上角坐標(biāo)。其構(gòu)造函數(shù)如下:)指定圓弧的寬和高及其左上角坐標(biāo)。其構(gòu)造函數(shù)如下:public void DrawArc(Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle);繪制圓弧的示例代碼如下:繪制圓弧的示例代碼如下:private void Form1_Paint(object sender, PaintEve

34、ntArgs e)Graphics g = e.Graphics;Pen pen = new Pen(Color.Blue, 2);Rectangle rec = new Rectangle(40, 20, 200, 160);g.DrawArc(pen, rec, 210, 120);10.4.7 繪制扇形繪制扇形由于扇形也是既有輪廓且封閉,所以,也可將其由于扇形也是既有輪廓且封閉,所以,也可將其劃分為空心扇形和實(shí)心(有填充)扇形兩種。劃分為空心扇形和實(shí)心(有填充)扇形兩種。GDI+中中與之對(duì)應(yīng)的繪圖方法分別為與之對(duì)應(yīng)的繪圖方法分別為DrawPie()方法和方法和FillPie()方法。繪制

35、扇形可用如下兩種構(gòu)造函數(shù)。方法。繪制扇形可用如下兩種構(gòu)造函數(shù)。(1)利用)利用Rectangle結(jié)構(gòu)確定繪圖邊界,一次繪制一個(gè)結(jié)構(gòu)確定繪圖邊界,一次繪制一個(gè)扇形。扇形。其構(gòu)造函數(shù)如下:其構(gòu)造函數(shù)如下:public void DrawPie (Pen pen, Rectangle rect);(2)指定扇形的寬和高及其左上角坐標(biāo)。其構(gòu)造函數(shù))指定扇形的寬和高及其左上角坐標(biāo)。其構(gòu)造函數(shù)如下:如下:public void DrawPie (Pen pen, int x, int y, int width, int height);繪制空心扇形和實(shí)心扇形的示例代碼如下:繪制空心扇形和實(shí)心扇形的示例代碼

36、如下:private void Form1_Paint(object sender, PaintEventArgs e)Graphics g = e.Graphics;Pen pen = new Pen(Color.Blue, 1);Rectangle rec1 = new Rectangle(20, 30, 120, 120);g.DrawPie(pen, rec1, 210, 120);Brush brush = new SolidBrush(Color.Red);Rectangle rec2 = new Rectangle(140, 30, 120, 120);g.FillPie(bru

37、sh, rec2, 210, 120); 10.5.1 Font類簡(jiǎn)介類簡(jiǎn)介Font類定義了特定文本的格式,包括字樣、字體和字號(hào)等屬性。類定義了特定文本的格式,包括字樣、字體和字號(hào)等屬性。 字樣字樣它是文本書寫和顯示時(shí)表現(xiàn)出的特定模式,如漢字的宋體、楷體以及它是文本書寫和顯示時(shí)表現(xiàn)出的特定模式,如漢字的宋體、楷體以及隸書等多種字樣。隸書等多種字樣。GDI+通過(guò)通過(guò)FontFamily類來(lái)定義字樣。類來(lái)定義字樣。 字體字體它主要表現(xiàn)為字體的粗細(xì)以及是否傾斜等特點(diǎn)。它主要表現(xiàn)為字體的粗細(xì)以及是否傾斜等特點(diǎn)。GDI+提供了一些預(yù)定提供了一些預(yù)定義的字體風(fēng)格,如義的字體風(fēng)格,如FontStyleBol

38、d(加粗)、(加粗)、FontStyleItalic(傾斜粗(傾斜粗)以及)以及FontStyleRugular(正常)等。(正常)等。 字號(hào)字號(hào)它用來(lái)指定字符所占區(qū)域的大小,通常用字符高度來(lái)描述。單位采用它用來(lái)指定字符所占區(qū)域的大小,通常用字符高度來(lái)描述。單位采用毫米或英寸,但通常以點(diǎn)為單位。毫米或英寸,但通常以點(diǎn)為單位。GDI+提供了提供了UnitDisplay(1/72英英寸)、寸)、UnitPixel(像素)、(像素)、UnitPoint(點(diǎn))、(點(diǎn))、UnitDocument(1/300英寸)、英寸)、UnitMillimeter(毫米)等字體尺寸單位。(毫米)等字體尺寸單位。Fon

39、t對(duì)象創(chuàng)建的示例代碼如下:對(duì)象創(chuàng)建的示例代碼如下:FontFamily fontFamily = new FontFamily(黑體黑體);Font font = new Font (fontFamily,12, FontStyle.Italic,GraphicsUnit.Pixel);上述示例代碼也可以編寫如下:上述示例代碼也可以編寫如下:Font font = new Font (黑體黑體,12, FontStyle.Italic,GraphicsUnit.Pixel);10.5.2 利用利用Font類繪制文本類繪制文本 GDI+中利用中利用DrawString()方法在指定位方法在指定位置,并且用指定的置,并且用指定的Brush和和Font對(duì)象繪制指對(duì)象繪制指定的文本字符串。定的文本字符串。DrawString()方法的構(gòu)造方法的構(gòu)造函數(shù)如下:函數(shù)如下:public void DrawSt

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論