10.3 基本繪圖
在.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 bmp = new Bitmap(200,100);
Graphics g = Graphics.FromImage(bmp);
bmp.Dispose();
g.Dispose();
如果要新創建一個圖像,則用這種方法是最好的。
10.3.2 繪制直線
繪制直線一般使用Graphics對象的DrawLine方法。下面的代碼在mm.jpg圖片上用紅色線條 斜畫一條直線。
Pen pen = new Pen(Color.Red); // 創建一支紅筆
Bitmap bmp = new Bitmap(Server.MapPath("~/mm.jpg"));
Graphics g = Graphics.FromImage(bmp);
g.DrawLine(pen, 0, 0, 200, 200); // 從[0,0]到[200,200]畫直線
pen.Dispose();
g.Dispose();
// 存為新圖片
bmp.Save(Server.MapPath("~/mm2.jpg"));
bmp.Dispose();
代碼說明:
bmp.Save: 將Image對象保存到磁盤。Graphics對象並非直接在原圖上畫直線,而是在內 存中操作Image對象,所以需要另存為mm2.jpg才能看出效果。
程序運行後,查看mm2.jpg文件就可以看到效果了,如下圖: