<%@ 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实现数据图表》中已经介绍了在浏览器看到的图表,一般都是图片文件。那么在ASP.NET中是否也可以生成这些图表?答案是肯定的,因为在ASP.NET中拥有了一个新功能--绘图功能,通过此功能就...
上一篇文章《在ASP.NET实现数据图表》中已经介绍了在浏览器看到的图表,一般都是图片文件。那么在ASP.NET中是否也可以生成这些图表?答案是肯定的,因为在ASP.NET中拥有了一个新功能--绘图功能,通过此功能 就能够...
asp.net c# 统计图 GoogleChartSharp 含实例
使用ASP.Net通过后台一般处理程序获取SQL查询数据转换成Json数据,前端通过Ajax请求与后端数据交互代码内附有注释,有任何问题即可留言
ASP.NET 生成图表; ASP.NET 生成图表
通过具体实例,介绍了在ASP.NET下绘制图表的两种方法:利用GDI+图形库和利用Microsoft Office Web Componets(OWC),并对这两种方法进行了比较
Chartlet是一个免费的ASP.NET使用的图表控件,它让你可以用最少的代码创造出非常漂亮的统计图表,我们的宗旨是让你的使用越简单越好,现在你只需要设置一个属性,绑定一个数据源 就可以轻松创建一个非常漂亮的图表!...
ASP.NET绑定sql数据库采用echarts显示数据图表,已封装成类文件
正在学习FusionCharts,结合asp.net+sqlserver做的一个小实例,展示如何访问数据库中的数据生成我们所需要的图表
ASP.NET生成饼图、柱形图、曲线图,使数据更直观 统计更清晰
Chartlet是一个为ASP.NET设计的免费的图表控件,用来在ASP.NET页面上将数据库的数据动态转换 成统计图表显示。如今成熟的.net图表控件有很多,但是大多数都是国外的,而且几乎都是收费的, 只适合大型的商业应用,不...
在对大批量的数据进行分析比较时,最常用也是最直观明了的表现方法莫过于绘制趋势图表。一般情况下,我们利用EXCEL制作各种类型的趋势图表,但它们都是基于静态数据的,即数据是事先整理好的而不 是动态生成的。如果...
提供了ASP.NET 基于会话的安全性,从而保证了显示的图表数据,使所有敏感图表非常安全。 强大的美学增强 图表不仅仅采用点阵表示,最重要的是数据的外观显示。为了轻松的显示您的图表,UltraWebChart提供了内置的...
本书是享有盛誉的ASP.NET 经典名著,涵盖了ASP.NET 4 的方方面面,包括了所有最新的特性,如图表控件、URL 路由引擎、ADO.NET Entity Framework 的使用和WCF 数据服务等。本书作者StephenWalther 是ASP 界的名人,是...
ASP.NET柱形图表分析投票结果,通过SQL语句从数据库中检索出相应的数据,来实现柱形图表
将数据通过百度Echart工具包实现数据柱状图
可以免费用在ASP.NET 3.5中,促成基于浏览器的丰富图表场景支持各种丰富的图表选项,包括pie(饼图), area(区域), range(范围), point(点), circular(圆形), accumulation(累积), data distribution(数据...
ASP代码中包含生成excel数据表、生成饼状图表、生成折线图表、生成柱状图表、生成混合图表、通过代码生成图表等代码,下载解压后可直接打开
ADO.NET类与断线数据集DataSet剖析,ADO.NET与ASP.NET网页整合应用实例,多层式架构组成探讨,业务逻辑层类设计,类图表的建立与设计说明,ObjectDataSource数据控制项类绑定设计,主版页、HTML元素、CSS与表示层...