当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET实现数据图表1

ASP.NET
漫谈.Net开发关于命名空间和目录划分
.net中关于企业Excel报表的生成
.NET中取得IP/用户名等信息常用方法
关于.Net开发下的分布式缓存设计
.NET中为组合框添加自动查询功能
ASP.NET如何进行性能优化问题
开发中如何有效监控.NET应用程序
ASP.NET2.0 显示写入日期和时间语法
用.NET Array类的Sort方法分类数值
Asp.net Mvc Pv4中使用AjaxHelper
Asp.net中Forms验证的角色验证授权(一)
Asp.net中Forms验证的角色验证授权(二)
Asp.Net2.0数据库基本操作方法学习
Asp.Net之枚举类型输出需要类型转换
用.NET的File控件上传文件的解决方案
.NET泛型技巧之类型参数之间的转换
在ASP.NET中将数据直接输出成Excel格式
在.NET框架下使用自定义配置设置
跟ASP.NET MVC一起使用jQuery
Visual Basic中文本框处理技巧集萃

ASP.NET实现数据图表1


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 128 ::
收藏到网摘: n/a

三.在ASP.NET中实现数据图表的完整源代码和运行界面:  在掌握了产生图片,在给图片上色、在图片上输出字符、和画线等基本操作过以后,充分的利用各种基本操作,就可以得的在ASP.NET中实现数据图表的完整程序,下图是运行界面:图05:在ASP.NET中实现数据图表的运行界面  下面是在ASP.NET中实现数据图表的完整代码(chart1.aspx),如下:<%@ Import Namespace = "System" %><%@ Import Namespace = "System.Drawing" %><%@ Import Namespace = "System.Drawing.Drawing2D" %><%@ Import Namespace = "System.Drawing.Imaging" %> <script language = "C#" runat = "server" >class LineChart{public Bitmap b ;public string Title = "在ASP.NET中实现数据图表" ;public ArrayList chartValues = new ArrayList ( ) ;public float Xorigin = 0 , Yorigin = 0 ;public float ScaleX , ScaleY ;public float Xdivs = 2 , Ydivs = 2 ;private int Width , Height ;private Graphics g ;private Page p ;struct datapoint {public float x ;public float y ;public bool valid ;}//初始化public LineChart ( int myWidth , int myHeight , Page myPage ) {Width = myWidth ; Height = myHeight ;ScaleX = myWidth ; ScaleY = myHeight ;b = new Bitmap ( myWidth , myHeight ) ;g = Graphics . FromImage ( b ) ;p = myPage ;}public void AddValue ( int x , int y ) {datapoint myPoint ;myPoint . x = x ;myPoint . y = y ;myPoint . valid = true ;chartValues . Add ( myPoint ) ;}public void Draw ( ) {int i ;float x , y , x0 , y0 ;string myLabel ;Pen blackPen = new Pen ( Color . Blue , 2 ) ;Brush blackBrush = new SolidBrush ( Color . Black ) ;Font axesFont = new Font ( "arial" , 10 ) ;//首先要创建图片的大小p . Response . ContentType = "image/jpeg" ;g . FillRectangle ( new SolidBrush ( Color . LightGreen ) , 0 , 0 , Width , Height ) ;int ChartInset = 50 ;int ChartWidth = Width - ( 2 * ChartInset ) ;int ChartHeight = Height - ( 2 * ChartInset ) ;g . DrawRectangle ( new Pen ( Color . Black , 1 ) , ChartInset , ChartInset , ChartWidth , ChartHeight ) ;//写出图片上面的图片内容文字g . DrawString ( Title , new Font ( "arial" , 14 ) , blackBrush , Width / 3 , 10 ) ;//沿X坐标写入X标签for ( i = 0 ; i <= Xdivs ; i++ ) {x = ChartInset + ( i * ChartWidth ) / Xdivs ;y = ChartHeight + ChartInset ;myLabel = ( Xorigin + ( ScaleX * i / Xdivs ) ) . ToString ( ) ;g . DrawString ( myLabel , axesFont , blackBrush , x - 4 , y + 10 ) ;g . DrawLine ( blackPen , x , y + 2 , x , y - 2 ) ;}//沿Y坐标写入Y标签for ( i = 0 ; i <= Ydivs ; i++ ){x = ChartInset ;y = ChartHeight + ChartInset - ( i * ChartHeight / Ydivs ) ;myLabel = ( Yorigin + ( ScaleY * i / Ydivs ) ) . ToString ( ) ;g . DrawString ( myLabel , axesFont , blackBrush , 5 , y - 6 ) ;g . DrawLine ( blackPen , x + 2 , y , x - 2 , y ) ;}g . RotateTransform ( 180 ) ;g . TranslateTransform ( 0 , - Height ) ;g . TranslateTransform ( - ChartInset , ChartInset ) ;g . ScaleTransform ( - 1 , 1 ) ;//画出图表中的数据datapoint prevPoint = new datapoint ( ) ;prevPoint . valid = false ;foreach ( datapoint myPoint in chartValues ) {if ( prevPoint . valid == true ) {x0 = ChartWidth * ( prevPoint . x - Xorigin ) / ScaleX ;y0 = ChartHeight * ( prevPoint . y - Yorigin ) / ScaleY ;x = ChartWidth * ( myPoint . x - Xorigin ) / ScaleX ;y = ChartHeight * ( myPoint . y - Yorigin ) / ScaleY ;g . DrawLine ( blackPen , x0 , y0 , x , y ) ;g . FillEllipse ( blackBrush , x0 - 2 , y0 - 2 , 4 , 4 ) ;g . FillEllipse ( blackBrush , x - 2 , y - 2 , 4 , 4 ) ;}prevPoint = myPoint ;}//最后以图片形式来浏览b . Save ( p . Response . OutputStream , ImageFormat . Jpeg ) ;}~LineChart ( ) {g . Dispose ( ) ;b . Dispose ( ) ;}}void Page_Load ( Object sender , EventArgs e ) {LineChart c = new LineChart ( 640 , 480 , Page ) ;c . Title = " 在ASP.NET中实现数据图表" ;c . Xorigin = 0 ; c . ScaleX = 500 ; c . Xdivs = 5 ;c . Yorigin = 0 ; c . ScaleY = 1000 ; c . Ydivs = 5 ;c . AddValue ( 0 , 150 ) ;c . AddValue ( 50 , 50 ) ;c . AddValue ( 100 , 700 ) ;c . AddValue ( 200 , 150 ) ;c . AddValue ( 300 , 450 ) ;c . AddValue ( 400 , 75 ) ;c . AddValue ( 450 , 450 ) ;c . AddValue ( 500 , 250 ) ;c . Draw ( ) ;}</script >