转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET实现数据图表         ★★★★

ASP.NET实现数据图表

作者:闵涛 文章来源:闵涛的学习笔记 点击数:799 更新时间:2009/4/23 10:42:35
在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动态创建图片
  产生的是一个黑色的图片,很不美观,下面就来给此图片上色,并且在此图片上面画线、写字等。

(2).如何给产生得图片上色:

  其实给产生得图片上色是比较容易的,首先根据"Bitmap"对象创建一个"Graphic"对象,然后根据此"Graphic"对象的方法来确定上色的图形类型(譬如显示的图片为椭圆、正方形等)。下面代码(chart4.aspx)的作用就是给chart3.aspx代码产生的图片上淡绿色:

<%@ 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 ) ;
Graphics g = Graphics . FromImage ( image ) ;
g . FillRectangle ( new SolidBrush ( Color . LightGreen ) , 0 , 0 , 400 , 400 ) ;
//以"Jpeg"格式保存此图片对象,在客户端显示出来
image . Save ( Response . OutputStream , ImageFormat . Jpeg ) ;
}
</script >
</head >
<body >
</body >
</html >

  下图是chart4.aspx运行的界面:


        图02:给产生的图片上色

  当然你不仅可以定制所产生的图片颜色,还可以定制产生的图片的形状,下面代码段的功能就是定制图片的形状为椭圆:

<%@ 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 ) ;
Graphics g = Graphics . FromImage ( image ) ;
g . FillRectangle ( new SolidBrush ( Color . LightGreen ) , 0 , 0 , 400 , 400 ) ;
//以"Jpeg"格式保存此图片对象,在客户端显示出来
image . Save ( Response . OutputStream , ImageFormat . Jpeg ) ;
}
</script >
</head >
<body >
</body >
</html >

  下图是此代码的运行界面:


        图03:定制图片的形状
  当然还可以使用"Graphic"对象的其他方法把图片定制成其他形状,这就不一一介绍了。

(3).如何在图片上实现画线和写字:

  在图片上写字是通过产生的"Graphic"对象的DrawString ( )方法来实现的,在调用此方法前,必须设置字体和刷子,具体调用方法是:

public void DrawString ( 
string s ,
Font font ,
Brush brush ,
float x ,
float y
) ;

"s"是要输出的字符串,"font"是字符串的字体,"brush"是定义刷子,后面二个参数是产生字符串的位置坐标。在程序中产生字符串的具体语句如下:

Font axesFont = new Font ( "arial" , 10 ) ;
Brush blackBrush = new SolidBrush ( Color . Red ) ;
g . DrawString ( "在图片上面写入文字,呵呵" , axesFont , blackBrush , 90 , 20 ) ;
 
  要在图片上画线要使用到"Graphic"对象的DrawLine ( )方法,具体的使用语法如下:

public void DrawLines (
Pen pen ,
Point [ ] points
) ;

  其中"points"是定义点的位置,当然你也可以使用本文中使用的方法来调用,就是定义每画一道线,这样我感觉更方法些。下面是在产生的图片上画出三条线:

Pen redPen = new Pen ( Color . Red , 1 ) ;
Pen blackPen = new Pen ( Color . Blue , 2 ) ;
//以下语句是在此图片对象上画出各种线条,可以定义线条的粗细、起点、终点等
g . DrawLine ( blackPen , 0 , 2 , 210 , 250 ) ;
g . DrawLine ( blackPen , 210 , 250 , 310 , 50 ) ;
g . DrawLine ( redPen , 310 , 50 , 210 , 350 ) ;

  知道了这些基本知识,在定制图片形状,给图片上色,在图片上写字、画线就显得比较容易了,下面代码(chart2.aspx)的功能就是定制一个正方形图片,并在图片上画线、写字、上色,具体如下:

<%@ 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 image = new Bitmap ( 400 , 400 ) ;
Font axesFont = new Font ( "arial" , 10 ) ;
Brush blackBrush = new SolidBrush ( Color . Red ) ;
Pen redPen = new Pen ( Color . Red , 1 ) ;
Pen blackPen = new Pen ( Color . Blue , 2 ) ;
Graphics g = Graphics . FromImage ( image ) ;
g . Clear ( Color . White ) ;
g . FillRectangle ( new SolidBrush ( Color . LightGreen ) , 0 , 0 , 400 , 400 ) ;
//在此图片对象中画出图片,可以定义文字大小、位置、色彩等
g . DrawString ( "在图片上面写入文字,呵呵" , axesFont , blackBrush , 90 , 20 ) ;
//以下语句是在此图片对象上画出各种线条,可以定义线条的粗细、起点、终点等
g . DrawLine ( blackPen , 0 , 2 , 210 , 250 ) ;
g . DrawLine ( blackPen , 210 , 250 , 310 , 50 ) ;
g . DrawLine ( redPen , 310 , 50 , 210 , 350 ) ;
//以"Jpeg"格式保存此图片对象,在客户端显示出来
// image . Save ( Response . OutputStream , ImageFormat . Jpeg ) ;
image . Save ( Response . OutputStream , ImageFormat . Jpeg ) ;
}
</script >
</head >
<body >
</body >
</html >


        图04:在图片上完成画线、写字和上色


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台