日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
超全面的.NETGDI+圖形圖像編程教程

GDI+繪圖基礎

編寫圖形程序時需要使用GDI(Graphics Device Interface,圖形設備接口)。

從程序設計的角度看,GDI包括兩部分:GDI對象和GDI函數(shù)。GDI對象定義了GDI函數(shù)使用的工具和環(huán)境變量;而GDI函數(shù)使用GDI對象繪制各種圖形。

在C#中,進行圖形程序編寫時用到的是GDI+(Graphics Device Interface Plus,圖形設備接口)版本,GDI+是GDI的進一步擴展,它使我們編程更加方便。

1 GDI+概述

GDI+是微軟在Windows 2000以后操作系統(tǒng)中提供的新的圖形設備接口,其通過一套部署為托管代碼的類來實現(xiàn),這套類被稱為GDI+的“托管類接口”。

GDI+主要提供了一下三類服務:

1.二維矢量圖形:GDI+提供了存儲圖形基元自身信息的類(或結(jié)構(gòu)體)、存儲圖形基元繪制方式信息的類以及實際進行繪制的類。

2.圖像處理:大多數(shù)圖片都難以劃定為直線和曲線的集合,無法使用二維矢量圖形方式進行處理。因此,GDI+為我們提供了Bitmap、Image等類,它們可用于顯示、操作和奧村BMP、JPG、GIF等圖像格式。

3.文字顯示:GDI+支持使用各種字體、字號和樣式來顯示文本。

我們要進行圖形編程,就必須先講解Graphics類,同時我們還必須掌握Pen、Brush和Rectangle這幾種類。

GDI+比GDI優(yōu)越主要表現(xiàn)在兩個方面:

1.GDI+通過提供新功能(例如:漸變畫筆和Alpha混合)擴展了GDI的功能;

2.修訂了編程模型,是圖形編程更加簡易靈活。

2 Graphics類

Graphics類封裝一個GDI+繪圖圖面,提供將對象繪制到現(xiàn)實設備的方法,Graphics與特定的設備上下文關(guān)聯(lián)。

畫圖方法都被包括在Graphics類中國,在畫任何對象(例如:Circle Rectangle)時,我們首先要創(chuàng)建一個Graphics類實例,這個實例相當于建立了一塊畫布,有了畫布才可以用各種畫圖方法進行繪圖。

繪圖程序的設計過程一般分為兩個步驟:1.創(chuàng)建Graphics;2.使用Graphics對象的方法繪圖、顯示文本或處理圖像。

通常我們使用下述三種方法來創(chuàng)建一個Graphics對象:

方法一:利用控件或窗體的Paint事件中的PaintEventArgs

在窗體或控件的Paint事件中接受對圖形對象的引用,作為PaintEventArgs(PaintEventArgs指定繪制控件所用的Graphics)的一部分,在為控件創(chuàng)建繪制代碼時,通常會使用此方法來獲取對圖形對象的引用。例如:

創(chuàng)建Graphics對象的兩種方法

 
 
  1. // 窗體的Paint事件的響應方法 
  2. private void Frm_Demo_Paint(object sender, PaintEventArgs e) 
  3.     Graphics _Graphics = e.Graphics; 
  4.  
  5. // 也可以直接重載控件或窗體的OnPaint方法 
  6. protected override void OnPaint(PaintEventArgs e) 
  7.     Graphics _Graphics = e.Graphics; 
  8.  
  9. 創(chuàng)建Graphics對象的兩種方法 

Paint事件在重繪控件時發(fā)生。

方法二:調(diào)用某控件或窗體的CreateGraphics方法

調(diào)用某控件或窗體的CreateGraphics方法以獲取對Graphics對象的引用,該對象表示該控件或窗體的繪圖圖面。

如果想在已存在的窗體或控件上繪圖,通常會使用此方法,例如:

 
 
  1. 1 Graphics _Graphics = this.CreateGraphics();    // 在當前窗體上創(chuàng)建Graphics對象 

方法三:調(diào)用Graphics類的FromImage靜態(tài)方法

由從Image集成的任何對象創(chuàng)建Graphics對象。在需要更改已存在的圖像時,通常會使用此方法。例如:

使用Graphics.FromImage()方法 創(chuàng)建Graphics對象

 
 
  1. Image img = Image.FromFile("孤影.jpg");   // 建立Image對象 
  2. Graphics _Graphics = Graphics.FromImage(img);   // 創(chuàng)建Graphics對象 

2.1 Graphics類的方法成員

有了一個Graphics的對象引用后,就可以利用該對象的成員進行各種各樣圖形的繪制,下面表格列出了Graphics類的常用方法成員:

Graphics類常用方法成員

名稱說明名稱說明
DrawArc畫弧DrawBezier畫立體的貝爾塞曲線
DrawBeziers畫連續(xù)立體的貝爾塞曲線DrawClosedCurve畫閉合曲線
DrawCurve畫曲線DrawEllipse畫橢圓
DrawImage畫圖像DrawLine畫線
DrawPath通過路徑畫線和曲線DrawPie畫餅形
DrawPolygon畫多邊形DrawRectangle畫矩形
DrawString繪制文字FillEllipse填充橢圓
FillPath填充路徑FillPie填充餅圖
FillPolygon填充多邊形FillRectangle填充矩形
FillRectangles填充矩形組FillRegion填充區(qū)域

在.NET中,GDI+的所有繪圖功能都包括在System、System.Drawimg、System.Drawimg.Imaging、System.Drawimg.Drawimg2D和System.Drawimg.Text等命名空間中,因此開始用GDI+類之前,需要先引用相應的命名空間。

2.2 引用命名空間

在C#應用程序中使用using命令引用給定的命名空間或類,下面是一個C#應用程序引用命名空間的例子:

引用命名空間

 
 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Data; 
  4. using System.ComponentModel; 
  5. using System.Drawing; 
  6. using System.Drawing.Drawing2D; 
  7. using System.Drawing.Imaging; 
  8.  
  9. 引用命名空間 

#p#

3 常用畫圖對象

在創(chuàng)建了Graphics對象后,就可以用它開始繪圖了,可以畫線、填充圖形、顯示文本等等,其中主要用到的對象還有:

Pen:用來用patterns、colors或者bitmaps進行填充

Color:用來畫線和多邊形,包括矩形、圓和餅形

Font:用來給文字設置字體格式

Brush:用來描述顏色

Rectangle:矩形結(jié)構(gòu)通常用來在窗體上畫矩形

Point:描述一對有序的x,y兩個坐標值

3.1 Pen類

Pen類用來繪制指定寬度和樣式的直線。使用DashStyle屬性繪制幾種虛線,可以使用各種各樣填充樣式(包括純色和紋理)來填充Pen繪制的直線,填充模式取決于畫筆或用作填充對象的紋理。

使用畫筆時,需要先實例化一個畫筆對象,主要有以下幾種方法:

實例化畫筆對象

 
 
  1. // 用指定的顏色實例化一只畫筆 
  2. public Pen(Color); 
  3.  
  4. // 用指定的畫刷實例化一只畫筆 
  5. public Pen(Brush); 
  6.  
  7. // 用指定的畫刷和寬度實例化一只畫筆 
  8. public Pen(Brush, float); 
  9.  
  10. // 用指定的顏色和寬度實例化一只畫筆 
  11. public Pen(Color, float); 
  12.  
  13. // 實例化畫筆格式如下: 
  14. Pen pen = new Pen(Color.Blue); 
  15. // 或者: 
  16. Pen pen = new Pen(Color.Blue, 100); 
  17.  
  18. 實例化畫筆對象 

Pen常用的屬性如下:

Pen常用屬性

名稱說明名稱說明
Alignment獲得或者設置畫筆的對齊方式Brush獲得或者設置畫筆的屬性
Color獲得或者設置畫筆的顏色Width獲得或者設置畫筆的寬度

3.2 Color結(jié)構(gòu)

在自然界中,顏色大都由透明度(A)和三基色(R,G,B)所組成。在GDI+中,通過Color結(jié)構(gòu)封裝對顏色的定義,Color結(jié)構(gòu)中,除了提供(A,R,G,B)以外,還提供許多系統(tǒng)定義的顏色,如Pink(粉色)。另外,還提供許多靜態(tài)成員,用戶對顏色進行操作。

Color結(jié)構(gòu)的基本屬性如下表:

顏色的基本屬性

名稱說明
A獲取此Color結(jié)構(gòu)的Alpha分量值,取值(0~255)
R獲取此Color結(jié)構(gòu)的紅色分量值,取值(0~255)
G獲取此Color結(jié)構(gòu)的綠色分量值,取值(0~255)
B獲取此Color結(jié)構(gòu)的藍色分量值,取值(0~255)
Name

獲取此Color結(jié)構(gòu)的名稱,這將返回用戶定義的顏色的名稱或已知顏色的名稱(如果該顏色是從某個名稱創(chuàng)建的)。

對于自定義的顏色,這將返回RGB值。

Color結(jié)構(gòu)的基本(靜態(tài))方法如下表:

顏色的基本方法

名稱說明
FromArgb從四個8位的ARGB分量(Alpha、紅色、綠色和藍色)值創(chuàng)建Color結(jié)構(gòu)
FromKnowColor從指定餓預定義顏色創(chuàng)建一個Color結(jié)構(gòu)
FromName從預定義顏色的指定名稱創(chuàng)建一個Color結(jié)構(gòu)。

Color結(jié)構(gòu)變量可以通過已有顏色構(gòu)造,也可以通過RGB建立,例如:

創(chuàng)建Color構(gòu)造對象

 
 
  1. Color color1 = Color.FromArgb(96, 06, 25); 
  2. Color color2 = Color.FromKnownColor(KnownColor.Blue);   // KnowColor為枚舉類型 
  3. Color color3 = Color.FromName("LightBlue"); 

在圖像處理中一般需要獲取或設置像素的顏色值,獲取一幅圖像的某個像素顏色值得具體步驟如下:

1.定義Bitmap

 
 
  1. Bitmap bitmap = new Bitmap("D:\\孤影\\LonelyShadow.bmp");  

2.定義一個顏色變量,把在指定位置所取得的像素值存入顏色變量中

 
 
  1. Color color = new Color(); 
  2. color = bitmap.GetPixel(10, 10); // 獲取此Bitmap中指定像素的顏色 

3.將顏色值分解出單色分量值

 
 
  1. int r, g, b; 
  2. r = color.R; 
  3. g = color.G; 
  4. b = color.B; 

3.3 Font類

Font類定義特定文本格式,包括字體、字號和字形屬性。Font類的常用構(gòu)造函數(shù)是:

public Font(string 字體名, float 字號, FontStyle 字形){} 其中字號和字體為可選項

public Font(string 字體名, float 字號) 其中字體名為Font的FontFamily的字符串表示形式

下面是定義一個F哦你團隊相愛難過的示例代碼:

 
 
  1. FontFamily fontFamily = new FontFamily("Arial"); 
  2. Font font = new Font(fontFamily, 16, FontStyle.Regular, GraphicsUnit.Pixel); 

字體常用屬性如下表:

字體的常用屬性

名稱說明名稱說明
Bold是否為粗體FontFamily字體成員
Height字體高Italic是否為斜體
Name字體名稱Size字體尺寸
SizeInPoints獲取此Font對象的字號,以磅為單位Strikeout是否有刪除線
Style字體類型UnderlineUnit
Unit字體尺寸單位  

3.4 Brush類

Brush類是一個抽象的基類,因此它不能被實例化,我們總是用它的派生類進行實例化一個畫刷的對象,當我們對圖形內(nèi)部進行填充操作時就會用到畫刷,關(guān)于畫刷在 [1.5] 中有詳細的講解。

3.5 Rectangle結(jié)構(gòu)

存儲一組整數(shù),共四個,表示一個矩形的位置和大小。

矩形結(jié)構(gòu)通常用來在窗體上畫矩形,除了利用它的構(gòu)造函數(shù)矩形對象外,還可以利用Rectangle結(jié)構(gòu)的屬性成員,其屬性成員如下表:

Rectangle結(jié)構(gòu)屬性

名稱說明名稱索命
Bottom底端坐標Height矩形高
IsEmpty測試矩形寬和高是否為0Left矩形左邊坐標
Location矩形的位置Right矩形右邊坐標
Size矩形尺寸Top矩形頂端坐標
Width矩形寬X矩形左上角頂點X坐標
Y矩形左上角頂點Y坐標  

Rectangle結(jié)構(gòu)的構(gòu)造函數(shù)有以下兩個:

Rectangle結(jié)構(gòu)的構(gòu)造函數(shù)

 
 
  1. // 用指定的位置和大小初始化Rectangle類的新實例 
  2. public Rectangle(Point, Size);  // Size結(jié)構(gòu)存儲一個有序整數(shù)對,通常為矩形的寬度和高度 
  3. public Rectangle(int, int, int, int); 

1.3.6 Point結(jié)構(gòu)

用指定坐標初始化Point類的新實例,這個結(jié)構(gòu)很像C++的Point結(jié)構(gòu),它描述了一對有序的x,y兩個坐標值,其構(gòu)造函數(shù)為:

public Point(int x, int y); 其中x為該點的水平位置;y為該點的垂直位置。

下面是構(gòu)造Point對象的示例代碼:

 
 
  1. Point pt1 = new Point(30, 30); 
  2. Point pt2 = new Point(110, 110); 

#p#

4 基本圖形繪制舉例

4.1 畫一個矩形

建一個C#.NET WinForms窗體應用程序,通過在窗體的OnPaint事件中繪制一個填充的漸變矩形:

填充矩形方法FillRectangle()的語法幫助定義如下:

填充矩形的方法FillRectangle() 語法定義

 
 
  1. // 
  2.         // 摘要:  
  3.         //     填充 System.Drawing.Rectangle 結(jié)構(gòu)指定的矩形的內(nèi)部。 
  4.         // 
  5.         // 參數(shù):  
  6.         //   brush: 
  7.         //     確定填充特性的 System.Drawing.Brush。 
  8.         // 
  9.         //   rect: 
  10.         //     System.Drawing.Rectangle 結(jié)構(gòu),它表示要填充的矩形。 
  11.         // 
  12.         // 異常:  
  13.         //   System.ArgumentNullException: 
  14.         //     brush 為 null。 
  15.         public void FillRectangle(Brush brush, Rectangle rect); 
  16.         // 
  17.         // 摘要:  
  18.         //     填充 System.Drawing.RectangleF 結(jié)構(gòu)指定的矩形的內(nèi)部。 
  19.         // 
  20.         // 參數(shù):  
  21.         //   brush: 
  22.         //     確定填充特性的 System.Drawing.Brush。 
  23.         // 
  24.         //   rect: 
  25.         //     System.Drawing.RectangleF 結(jié)構(gòu),它表示要填充的矩形。 
  26.         // 
  27.         // 異常:  
  28.         //   System.ArgumentNullException: 
  29.         //     brush 為 null。 
  30.         public void FillRectangle(Brush brush, RectangleF rect); 
  31.         // 
  32.         // 摘要:  
  33.         //     填充由一對坐標、一個寬度和一個高度指定的矩形的內(nèi)部。 
  34.         // 
  35.         // 參數(shù):  
  36.         //   brush: 
  37.         //     確定填充特性的 System.Drawing.Brush。 
  38.         // 
  39.         //   x: 
  40.         //     要填充的矩形的左上角的 x 坐標。 
  41.         // 
  42.         //   y: 
  43.         //     要填充的矩形的左上角的 y 坐標。 
  44.         // 
  45.         //   width: 
  46.         //     要填充的矩形的寬度。 
  47.         // 
  48.         //   height: 
  49.         //     要填充的矩形的高度。 
  50.         // 
  51.         // 異常:  
  52.         //   System.ArgumentNullException: 
  53.         //     brush 為 null。 
  54.         public void FillRectangle(Brush brush, float x, float y, float width, float height); 
  55.         // 
  56.         // 摘要:  
  57.         //     填充由一對坐標、一個寬度和一個高度指定的矩形的內(nèi)部。 
  58.         // 
  59.         // 參數(shù):  
  60.         //   brush: 
  61.         //     確定填充特性的 System.Drawing.Brush。 
  62.         // 
  63.         //   x: 
  64.         //     要填充的矩形的左上角的 x 坐標。 
  65.         // 
  66.         //   y: 
  67.         //     要填充的矩形的左上角的 y 坐標。 
  68.         // 
  69.         //   width: 
  70.         //     要填充的矩形的寬度。 
  71.         // 
  72.         //   height: 
  73.         //     要填充的矩形的高度。 
  74.         // 
  75.         // 異常:  
  76.         //   System.ArgumentNullException: 
  77.         //     brush 為 null。 
  78.         public void FillRectangle(Brush brush, int x, int y, int width, int height); 
  79.  
  80. 填充矩形的方法FillRectangle() 語法定義 

我們在這里只使用第一種定義,演示填充矩形,示例代碼如下:

畫一個顏色漸變的矩形

 
 
  1. ///  
  2.         /// 窗體的Paint事件的響應方法 
  3.         ///  
  4.         /// 當前事件觸發(fā)者(當前窗體) 
  5.         /// 附帶的事件參數(shù) 
  6.         private void Frm_Demo_Paint(object sender, PaintEventArgs e) 
  7.         { 
  8.             Graphics g = e.Graphics;    // 創(chuàng)建當前窗體的Graphics對象 
  9.             Rectangle rect = new Rectangle(50, 30, 100, 100);   // 創(chuàng)建一個矩形(x,y,width,height) 
  10.             // 創(chuàng)建線性漸變畫刷(畫刷界限, 起始顏色, 結(jié)束顏色, 漸變角度) 
  11.             LinearGradientBrush lBrush = new LinearGradientBrush(rect, Color.Purple, Color.LightBlue, LinearGradientMode.BackwardDiagonal); 
  12.             g.FillRectangle(lBrush, rect);  // 走起~ 
  13.         } 
  14.  
  15. 畫一個顏色漸變的矩形 

上述代碼運行效果如下: 

4.2 畫一個弧

畫弧線的語法定義如下:

畫弧線方法DrawArc()的定義

 
 
  1. // 
  2.         // 摘要:  
  3.         //     繪制一段弧線,它表示 System.Drawing.Rectangle 結(jié)構(gòu)指定的橢圓的一部分。 
  4.         // 
  5.         // 參數(shù):  
  6.         //   pen: 
  7.         //     System.Drawing.Pen,它確定弧線的顏色、寬度和樣式。 
  8.         // 
  9.         //   rect: 
  10.         //     System.Drawing.RectangleF 結(jié)構(gòu),它定義橢圓的邊界。 
  11.         // 
  12.         //   startAngle: 
  13.         //     從 x 軸到弧線的起始點沿順時針方向度量的角(以度為單位)。 
  14.         // 
  15.         //   sweepAngle: 
  16.         //     從 startAngle 參數(shù)到弧線的結(jié)束點沿順時針方向度量的角(以度為單位)。 
  17.         // 
  18.         // 異常:  
  19.         //   System.ArgumentNullException: 
  20.         //     pen 為 null。 
  21.         public void DrawArc(Pen pen, Rectangle rect, float startAngle, float sweepAngle); 
  22.  
  23. 畫弧線方法DrawArc()的定義 

參照定義的幫助,可寫出如下畫弧線的代碼:

畫弧線示例代碼

 
 
  1. ///  
  2.         /// 窗體的Paint事件的響應方法 
  3.         ///  
  4.         /// 當前事件觸發(fā)者(當前窗體) 
  5.         /// 附帶的事件參數(shù) 
  6.         private void Frm_Demo_Paint(object sender, PaintEventArgs e) 
  7.         { 
  8.             Graphics graphics = e.Graphics; 
  9.             Pen pen = new Pen(Color.Blue); 
  10.             Rectangle rect = new Rectangle(50,50,200,100); 
  11.             graphics.DrawArc(pen, rect, 12, 84); 
  12.         } 
  13.  
  14. 畫弧線示例代碼 

上述代碼運行結(jié)果如下:

4.3 畫線

畫線DrawLine()方法的語法定義如下:

DrawLine()語法定義

 
 
  1. // 
  2.         // 摘要:  
  3.         //     繪制一條連接兩個 System.Drawing.Point 結(jié)構(gòu)的線。 
  4.         // 
  5.         // 參數(shù):  
  6.         //   pen: 
  7.         //     System.Drawing.Pen,它確定線條的顏色、寬度和樣式。 
  8.         // 
  9.         //   pt1: 
  10.         //     System.Drawing.Point 結(jié)構(gòu),它表示要連接的第一個點。 
  11.         // 
  12.         //   pt2: 
  13.         //     System.Drawing.Point 結(jié)構(gòu),它表示要連接的第二個點。 
  14.         // 
  15.         // 異常:  
  16.         //   System.ArgumentNullException: 
  17.         //     pen 為 null。 
  18.         public void DrawLine(Pen pen, Point pt1, Point pt2); 
  19.         // 
  20.         // 摘要:  
  21.         //     繪制一條連接兩個 System.Drawing.PointF 結(jié)構(gòu)的線。 
  22.         // 
  23.         // 參數(shù):  
  24.         //   pen: 
  25.         //     System.Drawing.Pen,它確定線條的顏色、寬度和樣式。 
  26.         // 
  27.         //   pt1: 
  28.         //     System.Drawing.PointF 結(jié)構(gòu),它表示要連接的第一個點。 
  29.         // 
  30.         //   pt2: 
  31.         //     System.Drawing.PointF 結(jié)構(gòu),它表示要連接的第二個點。 
  32.         // 
  33.         // 異常:  
  34.         //   System.ArgumentNullException: 
  35.         //     pen 為 null。 
  36.         public void DrawLine(Pen pen, PointF pt1, PointF pt2); 
  37.         // 
  38.         // 摘要:  
  39.         //     繪制一條連接由坐標對指定的兩個點的線條。 
  40.         // 
  41.         // 參數(shù):  
  42.         //   pen: 
  43.         //     System.Drawing.Pen,它確定線條的顏色、寬度和樣式。 
  44.         // 
  45.         //   x1: 
  46.         //     第一個點的 x 坐標。 
  47.         // 
  48.         //   y1: 
  49.         //     第一個點的 y 坐標。 
  50.         // 
  51.         //   x2: 
  52.         //     第二個點的 x 坐標。 
  53.         // 
  54.         //   y2: 
  55.         //     第二個點的 y 坐標。 
  56.         // 
  57.         // 異常:  
  58.         //   System.ArgumentNullException: 
  59.         //     pen 為 null。 
  60.         public void DrawLine(Pen pen, float x1, float y1, float x2, float y2); 
  61.         // 
  62.         // 摘要:  
  63.         //     繪制一條連接由坐標對指定的兩個點的線條。 
  64.         // 
  65.         // 參數(shù):  
  66.         //   pen: 
  67.         //     System.Drawing.Pen,它確定線條的顏色、寬度和樣式。 
  68.         // 
  69.         //   x1: 
  70.         //     第一個點的 x 坐標。 
  71.         // 
  72.         //   y1: 
  73.         //     第一個點的 y 坐標。 
  74.         // 
  75.         //   x2: 
  76.         //     第二個點的 x 坐標。 
  77.         // 
  78.         //   y2: 
  79.         //     第二個點的 y 坐標。 
  80.         // 
  81.         // 異常:  
  82.         //   System.ArgumentNullException: 
  83.         //     pen 為 null。 
  84.         public void DrawLine(Pen pen, int x1, int y1, int x2, int y2); 
  85.  
  86. DrawLine()語法定義 

根據(jù)定義的幫助,我們以第一種語法 可以寫出如下示例代碼:

畫線DrawLine()函數(shù)示例代碼

 
 
  1. ///  
  2.         /// 窗體的Paint事件的響應方法 
  3.         ///  
  4.         /// 當前事件觸發(fā)者(當前窗體) 
  5.         /// 附帶的事件參數(shù) 
  6.         private void Frm_Demo_Paint(object sender, PaintEventArgs e) 
  7.         { 
  8.             Graphics graphics = e.Graphics; // 創(chuàng)建當前窗體的Graphics對象 
  9.             Pen pen = new Pen(Color.Blue);  // 創(chuàng)建藍色畫筆對象 
  10.             Point pointStart = new Point(30, 30);   // 創(chuàng)建起始點 
  11.             Point pointEnd = new Point(150, 150);   // 創(chuàng)建結(jié)束點 
  12.             graphics.DrawLine(pen, pointStart, pointEnd);   // 畫線 
  13.         } 
  14.  
  15. 畫線DrawLine()函數(shù)示例代碼 

上述代碼運行效果圖如下:

4.4 畫橢圓

還是先看一下DrawEllipse()畫橢圓的語法定義:

畫橢圓方法 DrawEllipse()語法定義

 
 
  1. // 
  2.         // 摘要:  
  3.         //     繪制邊界 System.Drawing.Rectangle 結(jié)構(gòu)指定的橢圓。 
  4.         // 
  5.         // 參數(shù):  
  6.         //   pen: 
  7.         //     System.Drawing.Pen,它確定曲線的顏色、寬度和樣式。 
  8.         // 
  9.         //   rect: 
  10.         //     System.Drawing.Rectangle 結(jié)構(gòu),它定義橢圓的邊界。 
  11.         // 
  12.         // 異常:  
  13.         //   System.ArgumentNullException: 
  14.         //     pen 為 null。 
  15.         public void DrawEllipse(Pen pen, Rectangle rect); 
  16.         // 
  17.         // 摘要:  
  18.         //     繪制邊界 System.Drawing.RectangleF 定義的橢圓。 
  19.         // 
  20.         // 參數(shù):  
  21.         //   pen: 
  22.         //     System.Drawing.Pen,它確定曲線的顏色、寬度和樣式。 
  23.         // 
  24.         //   rect: 
  25.         //     System.Drawing.RectangleF 結(jié)構(gòu),它定義橢圓的邊界。 
  26.         // 
  27.         // 異常:  
  28.         //   System.ArgumentNullException: 
  29.         //     pen 為 null。 
  30.         public void DrawEllipse(Pen pen, RectangleF rect); 
  31.         // 
  32.         // 摘要:  
  33.         //     繪制一個由邊框(該邊框由一對坐標、高度和寬度指定)定義的橢圓。 
  34.         // 
  35.         // 參數(shù):  
  36.         //   pen: 
  37.         //     System.Drawing.Pen,它確定曲線的顏色、寬度和樣式。 
  38.         // 
  39.         //   x: 
  40.         //     定義橢圓的邊框的左上角的 X 坐標。 
  41.         // 
  42.         //   y: 
  43.         //     定義橢圓的邊框的左上角的 Y 坐標。 
  44.         // 
  45.         //   width: 
  46.         //     定義橢圓的邊框的寬度。 
  47.         // 
  48.         //   height: 
  49.         //     定義橢圓的邊框的高度。 
  50.         // 
  51.         // 異常:  
  52.         //   System.ArgumentNullException: 
  53.         //     pen 為 null。 
  54.         public void DrawEllipse(Pen pen, float x, float y, float width, float height); 
  55.         // 
  56.         // 摘要:  
  57.         //     繪制一個由邊框定義的橢圓,該邊框由矩形的左上角坐標、高度和寬度指定。 
  58.         // 
  59.         // 參數(shù):  
  60.         //   pen: 
  61.         //     System.Drawing.Pen,它確定曲線的顏色、寬度和樣式。 
  62.         // 
  63.         //   x: 
  64.         //     定義橢圓的邊框的左上角的 X 坐標。 
  65.         // 
  66.         //   y: 
  67.         //     定義橢圓的邊框的左上角的 Y 坐標。 
  68.         // 
  69.         //   width:&
    文章名稱:超全面的.NETGDI+圖形圖像編程教程
    分享地址:http://www.dlmjj.cn/article/dhgcpcp.html