top
Loading...
ASP.NET實現數據圖表

在ASP中插入圖表,常用的方法是使用MSChart控件。那么在ASP.NET是否也是這樣呢?答案是不可以的。

我們知道ASP.NET是一種編譯語言,當客戶端第一次調用ASP.NET頁面的時候,其實是經過了一種比較復雜的編譯過程,編譯生產MSIL文件,存儲到本地機,MSIL文件其實是一個中間語言的文件,然后此文件又通過JIT(Just in time)編譯器進行再編譯,生成機器語言,這樣你所調用的ASP.NET頁面才展現出來,對于不同的機器,有著不同的JIT,也就被編譯成不同機器語言,這就是微軟公司大力鼓吹ASP.NET的所謂跨平臺的原理。

當ASP.NET頁面被編譯成MSIL文件的時候,編譯所使用的類庫必須是受管代碼文件(Managed Code),而ActiveX控件是已經被編譯成機器語言的文件,他屬于非受管代碼文件(Unmanaged Code)。所以直接在ASP.NET調用MSChart組件是不可能的。雖然你可以利用.Net框架提供的工具把此MSChart組件轉換成受管代碼文件,但這個過程相對比較復雜,并且利用這種方法產生的圖表速度相當慢,還有就是由MSChart組件自身所限制,對于復雜的圖表,是無法利用他來生成的。

本文將以股市的行情圖表為例,介紹如何在ASP.NET中實現圖表。其實我們看到的行情圖并不是一個圖表,而是一個圖片。在服務器端產生圖片,然后在圖片上面畫出想要顯示給用戶的各種信息,然后通過瀏覽器發送圖片到客戶端,從而形成圖表,這就是本文要探討的方法。這種方法雖然實現起來比較復雜,但操作靈活,非常實用,尤其適用于互聯網上的圖表,下面就來介紹具體的實現方法。

一.本文中介紹的程序設計及運行環境

(1).微軟視窗2000 服務器版

(2)..Net Framework SDK Beta 2以上版本

二.在ASP.NET中實現數據圖表的關鍵步驟以及解決方法:

在ASP.NET頁面中畫出圖表的關鍵步驟主要有兩步,其一,創建一個圖片對象(Bitmap)。然后利用.Net FrameWork SDK所提供的方法在此圖片對象上面畫出自己想要的圖形,譬如畫線,畫點等。其二,就是為了更適合傳輸,把此圖片對象,以"Jpeg"格式保存,并顯示出來。下面我們就來看看這二步的具體實現方法。

(1).首先我們來看看如何在ASP.NET頁面創建一個動態圖片,并顯示出來。

創建一個圖片對象其實非常容易的,利用命名空間"System.drawing"中的"Bitmap"類來實現的,下列語句可以創建一個位圖對象:

//創建一個"Bitmap"對象
Bitmap image = new Bitmap ( 400 , 400 ) ;

修改"Bitmap"對象的二個參數來改變創建的位圖對象的長和寬。通過Bitmap類的Save方法就可以顯示已經創建的位圖對象。由于位圖文件要占用很多的空間,為了便于網絡傳輸,一般轉換成"Jpeg"或者"Gif"文件來保持。下面語句是把已經創建的位圖對象,轉換成"Jpeg"文件顯示:

//以"Jpeg"格式保存此圖片對象,在客戶端顯示出來
image . Save ( Response . OutputStream , ImageFormat . Jpeg );

稍加修改,就可以把位圖對象以"Gif"文件來顯示,具體如下:

//以"Jpeg"格式保存此圖片對象,在客戶端顯示出來
image . Save ( Response . OutputStream , ImageFormat . Gif ) ;

下面代碼(chart3.aspx)的作用就是ASP.NET動態創建一個圖片并顯示出來:

<%@ Page Language = "C#" ContentType = "image/jpeg" %>
<%@ Import Namespace = "System" %>
<%@ Import Namespace = "System.Drawing" %>
<%@ Import Namespace = "System.Drawing.Drawing2D" %>
<%@ Import Namespace = "System.Drawing.Imaging" %>
<html >
<head >
<script language = "C#" runat = "server" >
void Page_Load ( object sender , EventArgs e )
{
//創建一個"Bitmap"對象
Bitmap image = new Bitmap ( 400 , 400 ) ;
//以"Jpeg"格式保存此圖片對象,在客戶端顯示出來
image . Save ( Response . OutputStream , ImageFormat . Jpeg ) ;
}
</script >
</head >
<body >
</body >
</html >

下面是此代碼運行后的界面:


圖01:利用ASP.NET動態創建圖片

產生的是一個黑色的圖片,很不美觀,下面就來給此圖片上色,并且在此圖片上面畫線、寫字等。
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗