Graphics類與GDI

來源:互聯網
上載者:User

Graphics類是GDI+的核心,Graphics提供將對象繪製到顯示裝置的方法。Graphics可以與特定裝置的上下文相關聯,是用於建立圖形的對象。它封裝了繪製直線、曲線、圖形、映像和文本的方法,是GDI+實現繪製直線、曲線、圖形、映像和文本的類,是GDI+操作的基礎類。

GDI+繪製處理的流程如下。

(1)建立Graphics對象。

(2)通過Graphics對象繪製線條、形狀或文本。

建立GDI+對象的方法有如下3種。

在表單或控制項的Paint事件處理方法中建立,PaintEventArgs類參數中包含繪圖物件的引用,例如下面的代碼:

 
  1. private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs pe)  
  2. {  
  3.      Graphics g=pe.Graphics;  

調用表單或控制項的CreateGraphics方法建立Graphics對象,例如下面的代碼:

 
  1. Graphics g=pe.Graphics;  
  2. g=this.CreateGraphics(); 

通過從Image繼承的對象建立Graphics對象,例如下面的代碼:

 
  1. Bitmap mm=new Bitmap(@"D:\123.bmp");  
  2. 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個值來組成制定顏色。例如,使用下面的代碼建立了兩種顏色。

 
  1. Color mm = Color.FormArgb(255,0,0,255);  
  2.             //不透明藍色  
  3. Color nn = Color.FormArgb(128,255,0,0);  
  4.                     //半透明紅色 

2.Brush類

Brush類定義用於填充圖形形狀內部的對象,Brush類是一個抽象基類,不能進行執行個體化處理。如果需要建立一個畫刷對象,則需要Brush類的衍生類別。

SolidBrush類定義了單色畫刷,畫刷可以填充圖形形狀。例如,下面的代碼建立了一個實心畫刷。

 
  1. SolidBrush Brush = new SolidBrush(Color.PeachPuff); 

通過畫刷顏色的Alpha值來指定形狀顏色和背景顏色的混合方式。例如,使用下面的代碼建立了兩種顏色。

 
  1. Color mm = new SolidBrush (Color.FormArgb(255,0,0,255));  
  2. //不透明藍色實心畫刷  
  3. Color nn = new SolidBrush (Color.FormArgb(128,255,0,0));  
  4.         //半透明紅色實心畫刷 

System.Drawing.Drawing2D命名空間中的LinearGradientBrush類定義雙色漸層和自訂多色漸層畫刷,所有的漸層都是由矩形的寬度或兩個點指定的直線來定義的。LinearGradientBrush支援水平、垂直和對角線方向的線形漸層。線形漸層中的顏色可以自行定義,使顏色非均勻地變化。

看下面的一段代碼:

 
  1. LinearGradientBrush mm = new LinearGradientBrush(new Point(0,10)),  
  2. new Point(0,10),  
  3. new Point(200,10),  
  4. Color.FormArgb(255,255,0,0),  
  5. Color.FormArgb(255,0,0,255)); 

在上面的代碼中,使用了LinearGradientBrush的建構函式mm來建立一個漸層畫刷。

下面的代碼建立了垂直的漸層畫刷。

 
  1. LinearGradientBrush mm = new LinearGradientBrush(new Point(0,10)),  
  2. new Point(10,0),  
  3. new Point(10,200),  
  4. Color.FormArgb(255,255,0,0),  
  5. Color.FormArgb(255,0,0,255)); 

下面的代碼建立了對角線的漸層畫刷。

 
  1. LinearGradientBrush mm = new LinearGradientBrush(new Point(0,10)),  
  2. new Point(0,0),  
  3. new Point(200,200),  
  4. Color.FormArgb(255,255,0,0),  
  5. Color.FormArgb(255,0,0,255)); 

3.Pen類

Pen類用於繪製直線或曲線對象,它通過本身的屬性繪製具有指定寬度和樣式的直線。可以使用DashStyle屬性繪製虛線,DashStyle屬性值是由DashStyle枚舉定義的,具體說明如下。

Custom:設定使用者定義的自訂畫線段樣式。

Dash:設定由畫線段組成的直線。

 

DashDot:設定由重複的畫線點圖案構成的直線。

DashDotDot:設定由重複的畫線點的點圖案構成的直線。

Dot:設定由點構成的直線。

Solid:設定直線。

看下面的一段代碼:

 
  1. Pen mm = new Pen (Color.Black,8);  
  2. Pen nn = new Pen (Color.Red);  
  3.  nn.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;  
  4.  mm.Color = Color.Pink;  
  5.  mm.Width = 4;  
  6.  mm.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot; 

在上面的代碼中,分別定義了Pen類函數對象mm和nn,分別用於設定筆的顏色和虛實。

同樣,通過畫筆顏色的Alpha值來指定形狀顏色和背景顏色的混合方式。例如,使用下面的代碼建立了兩種筆。

  1. Pen mm = new Pen (Color.FormArgb(255,0,0,255),15);    //不透明的筆
     
  2. Pen nn = new Pen (Color.FormArgb(128,0,0,255),15);  

    //透明的筆 

轉載自:http://book.51cto.com/art/200907/139870.htm

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.