在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动态创建图片 |
产生的是一个黑色的图片,很不美观,下面就来给此图片上色,并且在此图片上面画线、写字等。