分享
 
 
 

ASP.NET实现数据图表c

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

三。在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 >

四。 总结:

实现图表始终是互联网编程的一个难点,本文介绍了在ASP.NET页面中如何实现数据图表,在没有什么好的组件可以利用的前提下,利用。Net FrameWork SDK GDI+中提供的各种用以操作图形的方法,这样的过程虽然有点烦杂,但对实现复杂的图表是非常有用的。希望本文不仅能够帮助读者解决在互联网上的图表问题,也能够对读者的针对GDI+也有所了解。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有