在.NET中圖形包括以下兩個步驟。
第一,建立Graphics對象。
第二,使用Graphics對象繪制線條和形狀,呈現文本或顯示操作圖像。
由此可見,如何建立Graphics對象是首先要解決的問題。本節将講述如何繪制直線、矩形、圓等基本圖形,然後基本圖形構成複雜的圖形。Graphics常用的繪圖方法如下表。
10.3.1 建立圖形對象
建立圖形對象可有如下幾種方法。
² 在窗體或控件的Paint事件中接收對圖形對象的引用,作為PaintEventArgs的一部分。在為控件建立繪制代碼時,通常使用此方法來擷取對圖形對象的引用。
² 調用某控件或窗體的CreateGraphics方法,以擷取對Graphics對象的引用,該對象表示該控件或窗體的繪圖圖面。如果想在已存在的窗體或控件上繪圖,可使用此方法。
² 由從Image繼承的任何對象建立Graphics對象。此方法一般用來生成圖檔。
就ASP.NET Web應用程式而言,前兩種是無法做到的,是以隻能采用第三種方法。
假設要從網站根目錄mm.jpg圖形建立圖形對象,可以使用如下代碼:
Bitmap bmp = new Bitmap(Server.MapPath("~/mm.jpg"));
Graphics g = Graphics.FromImage(bmp);
bmp.Dispose();
g.Dispose();
注意:這裡要求圖檔必須存在,相當于對圖檔的修改操作,否則将不能建立Bitmap對象,也就無法建立圖形對象了。另外,Bitmap對象和圖形對象都是非常耗費計算機記憶體的,是以要及時調用Dispose方法釋放占用資源。
當然,也可以在記憶體中建立Bitmap對象,對其繪制完畢後再儲存到硬碟上或直接輸入到HTTP流中發回用戶端顯示。比如在記憶體中建立一個200+100的圖像,代碼如下:
Bitmap bmp = new Bitmap(200,100);
如果要新建立一個圖像,則用這種方法是最好的。
10.3.2 繪制直線
繪制直線一般使用Graphics對象的DrawLine方法。下面的代碼在mm.jpg圖檔上用紅色線條斜畫一條直線。
Code
Pen pen = new Pen(Color.Red); // 建立一支紅筆
g.DrawLine(pen, 0, 0, 200, 200); // 從[0,0]到[200,200]畫直線
pen.Dispose();
// 存為新圖檔
bmp.Save(Server.MapPath("~/mm2.jpg"));
代碼說明:
bmp.Save: 将Image對象儲存到磁盤。Graphics對象并非直接在原圖上畫直線,而是在記憶體中操作Image對象,是以需要另存為mm2.jpg才能看出效果。
程式運作後,檢視mm2.jpg檔案就可以看到效果了,如下圖: