Graphics類是GDI+的核心,Graphics提供將對象繪製到顯示裝置的方法。Graphics可以與特定裝置的上下文相關聯,是用於建立圖形的對象。它封裝了繪製直線、曲線、圖形、映像和文本的方法,是GDI+實現繪製直線、曲線、圖形、映像和文本的類,是GDI+操作的基礎類。
GDI+繪製處理的流程如下。
(1)建立Graphics對象。
(2)通過Graphics對象繪製線條、形狀或文本。
建立GDI+對象的方法有如下3種。
在表單或控制項的Paint事件處理方法中建立,PaintEventArgs類參數中包含繪圖物件的引用,例如下面的代碼:
- private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs pe)
- {
- Graphics g=pe.Graphics;
- }
調用表單或控制項的CreateGraphics方法建立Graphics對象,例如下面的代碼:
- Graphics g=pe.Graphics;
- g=this.CreateGraphics();
通過從Image繼承的對象建立Graphics對象,例如下面的代碼:
- Bitmap mm=new Bitmap(@"D:\123.bmp");
- Graphics g= Graphics.FormImage(mm);
建立上述Graphics對象後,可以用上述對象來繪製線條、形狀或文本。
GDI+定義了繪圖處理的一系列工具類,通過這些繪圖工具可以和Graphics對象一起實現繪圖處理,GDI+內的主要繪圖工具類如下。
1.Color結構
Color結構表示ARGB顏色,使用Alpha、Red、Green、和Blue的值來表示顏色。Color結構以屬性的方式定義了大量的有名稱的顏色,例如Color.Red、Color.PeachPuff和Color.Pink等。
Color結構內的FormArgb方法可以自訂產生顏色,通過設定4個值來組成制定顏色。例如,使用下面的代碼建立了兩種顏色。
- Color mm = Color.FormArgb(255,0,0,255);
- //不透明藍色
- Color nn = Color.FormArgb(128,255,0,0);
- //半透明紅色
2.Brush類
Brush類定義用於填充圖形形狀內部的對象,Brush類是一個抽象基類,不能進行執行個體化處理。如果需要建立一個畫刷對象,則需要Brush類的衍生類別。
SolidBrush類定義了單色畫刷,畫刷可以填充圖形形狀。例如,下面的代碼建立了一個實心畫刷。
- SolidBrush Brush = new SolidBrush(Color.PeachPuff);
通過畫刷顏色的Alpha值來指定形狀顏色和背景顏色的混合方式。例如,使用下面的代碼建立了兩種顏色。
- Color mm = new SolidBrush (Color.FormArgb(255,0,0,255));
- //不透明藍色實心畫刷
- Color nn = new SolidBrush (Color.FormArgb(128,255,0,0));
- //半透明紅色實心畫刷
System.Drawing.Drawing2D命名空間中的LinearGradientBrush類定義雙色漸層和自訂多色漸層畫刷,所有的漸層都是由矩形的寬度或兩個點指定的直線來定義的。LinearGradientBrush支援水平、垂直和對角線方向的線形漸層。線形漸層中的顏色可以自行定義,使顏色非均勻地變化。
看下面的一段代碼:
- LinearGradientBrush mm = new LinearGradientBrush(new Point(0,10)),
- new Point(0,10),
- new Point(200,10),
- Color.FormArgb(255,255,0,0),
- Color.FormArgb(255,0,0,255));
在上面的代碼中,使用了LinearGradientBrush的建構函式mm來建立一個漸層畫刷。
下面的代碼建立了垂直的漸層畫刷。
- LinearGradientBrush mm = new LinearGradientBrush(new Point(0,10)),
- new Point(10,0),
- new Point(10,200),
- Color.FormArgb(255,255,0,0),
- Color.FormArgb(255,0,0,255));
下面的代碼建立了對角線的漸層畫刷。
- LinearGradientBrush mm = new LinearGradientBrush(new Point(0,10)),
- new Point(0,0),
- new Point(200,200),
- Color.FormArgb(255,255,0,0),
- Color.FormArgb(255,0,0,255));
3.Pen類
Pen類用於繪製直線或曲線對象,它通過本身的屬性繪製具有指定寬度和樣式的直線。可以使用DashStyle屬性繪製虛線,DashStyle屬性值是由DashStyle枚舉定義的,具體說明如下。
Custom:設定使用者定義的自訂畫線段樣式。
Dash:設定由畫線段組成的直線。
DashDot:設定由重複的畫線點圖案構成的直線。
DashDotDot:設定由重複的畫線點的點圖案構成的直線。
Dot:設定由點構成的直線。
Solid:設定直線。
看下面的一段代碼:
- Pen mm = new Pen (Color.Black,8);
- Pen nn = new Pen (Color.Red);
- nn.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
- mm.Color = Color.Pink;
- mm.Width = 4;
- mm.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
在上面的代碼中,分別定義了Pen類函數對象mm和nn,分別用於設定筆的顏色和虛實。
同樣,通過畫筆顏色的Alpha值來指定形狀顏色和背景顏色的混合方式。例如,使用下面的代碼建立了兩種筆。
- Pen mm = new Pen (Color.FormArgb(255,0,0,255),15); //不透明的筆
Pen nn = new Pen (Color.FormArgb(128,0,0,255),15);
//透明的筆
轉載自:http://book.51cto.com/art/200907/139870.htm