- 热门文章:
- · ASP.NET实现数据图表a
- · 用asp.net画饼图
- · .Net的Collection类的一些使用说明
- · Asp.net,IBatis For .Net,DAOFactory在Web开发中的数据表示
- · ASP.NET中的状态管理
- · ASP.Net生成静态HTML页
- · 关于ASP.NET中的缓存问题的几种方式
- · asp.net中datareader对象的简单使用
- · ASP.Net状态管理
- · ASP.NET 中 Session 实现原理浅析 [2] 状态管理器
- · ASP.NET 中 Session 实现原理浅析 [1] 会话的建立流程
- · Asp.net 在DataGrid中使选中的页码变成突显的颜色
上一篇:ASP.NET实现数据图表b >>
ASP.NET实现数据图表1
在掌握了产生图片,在给图片上色、在图片上输出字符、和画线等基本操作过以后,充分的利用各种基本操作,就可以得的在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 >
四. 总结:
实现图表始终是互联网编程的一个难点,本文介绍了在ASP.NET页面中如何实现数据图表,在没有什么好的组件可以利用的前提下,利用.Net FrameWork SDK GDI+中提供的各种用以操作图形的方法,这样的过程虽然有点烦杂,但对实现复杂的图表是非常有用的。希望本文不仅能够帮助读者解决在互联网上的图表问题,也能够对读者的针对GDI+也有所了解。
下一篇:ASP.NET实现数据图表a >>
相关文章:
- · 给Asp.Net初学者的关于继承和多态性的例子
- · ASP.NET编程中的十大技巧
- · ASP.NET环境下完整的treeview使用类
- · asp.net下的日历控件源代码
- · ASP.NET中上传文件到数据库
- · ASP.NET开发经验积累
- · ASP.NET组件设计Step by Step(8)
- · 在VB.NET下面如何显示和保存缩放图像
- · 在ASP.NET 中实现单点登录
- · 一个ASP.NET调试错误
- · asp.net 2.0的新功能!
- · 如何同一时间一个帐号只有一个用户使用?(asp.net)
- · ASP.NET网站建设之代码分离
- · Aspx中导Excel
- · ASP.NET之Web打印-终极解决篇
- · 使用.NET实现视频播放
- · Aspx中导Excel
- · ASP.NET之Web打印-终极解决篇
- · ASP.NET编程中的十大技巧
- · 发发牢骚,关于ASP.NET读取XML新闻的问题
- · ASP + XML + javascript 实现动态无限级联动菜单
- · Asp.Net页面输出到EXCEL
- · 关于ASP.NET中Resonse.QueryString函数汉字参数传递错误的处理办法
- · Asp.net中的代码与表现分离
- · 在 ASP.NET 中实现 Page Controller
- · 在 ASP.NET 中实现 Page Controller
- · [ASP.net]DataGrid鼠标事件处理
- · ASP.NET页面间的传值的几种方法
- · 在asp.net中发送带有smtp验证的邮件
- · [ASP.net]DataGrid鼠标事件方法
- · Asp.Net获取本地计算机和其他计算机的MAC值的方法
- · 基于ASP.NET的网页复用方法
- · Asp.net动态生成html页面
- · 解读邮件发送CDO.Message错误
- · 正则表达式的原理和介绍,应用(概念篇)
- · ASP.NET的Trace
- · Asp.net动态生成html页面
- · asp.net里怎么提交数据到另外一页去
