冷月葬花魂 发表于 2015-1-16 22:45:49

ASP.NET教程之用代码画折线图/柱形图/条形图/饼图...

c++是语言,其实C++和java的应用范围根本就不一样的。在java应用的领域内,c++是不合适的。所以微软才搞了C#和Java对抗。饼图|折线图|柱形图  本文将先容在.Net中怎样利用代码绘图表,就像用MSExcel天生的图表一样。也能够画像DataGrid一样的表格。
  在.Net中,微软给我们供应了绘图类(System.Drawing.Imaging),在该类中绘图的基础功效都有。好比:直线、折线、矩形、多边形、卵形、扇形、曲线等等,因而一样平常的图形都能够间接经由过程代码画出来。接上去先容一些绘图函数:
BitmapbMap=newBitmap(500,500) //界说图象巨细;
bMap.Save(Stream,ImageCodecInfo)//将图象保留到指定的输入流;
Graphicsgph//界说或创立GDI画图对像;
PointFcPt //界说二维立体中x,y坐标;
DrawString(string,Font,Brush,PonitF)//用指定的Brush和Font对像在指定的矩形或点绘制指定的字符串;
DrawLine(Pen,Ponit,Ponit)//用指定的笔(Pen)对像绘制指定两点之间直线;
DrawPolygon(Pen,Ponit[])//用指定的笔(Pen)对像绘制指定多边形,好比三角形,四边形等等;
FillPolygon(Brush,Ponit[])//用指定的刷子(Brush)对像添补指定的多边形;
DrawEllipse(Pen,x,y,Width,Height)//用指定的笔绘制一个边框界说的椭圆;
FillEllipse(Brush,x,y,Width,Height)//用指定的刷子添补一个边框界说的椭圆;
DrawRectangle(Pen,x,y,Width,Height)//用指定的笔绘制一个指定坐标点、宽度、高度的矩形;
DrawPie(Pen,x,y,Width,Height,startAngle,sweepAngle)//用指定的笔绘制一个指定坐标点、宽度、高度和两条射线构成的扇形;
  OK,就先容这么多了,参数已简写。我信任在实践的利用过程当中,人人会有更深入的体味。最初,经由过程一个复杂的例子来看看怎样利用这些绘图函数(折线图)。
画上述折线图的代码以下:
//数据初始化
string[]month=newstring{"一月","仲春","三月","四月","蒲月","六月","七月","八月","玄月","十月","十一月","十仲春"};
float[]d=newfloat{20.5F,60,10.8F,15.6F,30,70.9F,50.3F,30.7F,70,50.4F,30.8F,20};
//绘图初始化
BitmapbMap=newBitmap(500,500);
Graphicsgph=Graphics.FromImage(bMap);
gph.Clear(Color.White);
PointFcPt=newPointF(40,420);//中央点
PointF[]xPt=newPointF{newPointF(cPt.Y+15,cPt.Y),newPointF(cPt.Y,cPt.Y-8),newPointF(cPt.Y,cPt.Y+8)};//X轴三角形
PointF[]yPt=newPointF{newPointF(cPt.X,cPt.X-15),newPointF(cPt.X-8,cPt.X),newPointF(cPt.X+8,cPt.X)};//Y轴三角形
gph.DrawString("某工场某产物月临盆量图表",newFont("宋体",14),Brushes.Black,newPointF(cPt.X+60,cPt.X));//图表题目
//画X轴
gph.DrawLine(Pens.Black,cPt.X,cPt.Y,cPt.Y,cPt.Y);
gph.DrawPolygon(Pens.Black,xPt);
gph.FillPolygon(newSolidBrush(Color.Black),xPt);
gph.DrawString("月份",newFont("宋体",12),Brushes.Black,newPointF(cPt.Y+10,cPt.Y+10));
//画Y轴
gph.DrawLine(Pens.Black,cPt.X,cPt.Y,cPt.X,cPt.X);
gph.DrawPolygon(Pens.Black,yPt);
gph.FillPolygon(newSolidBrush(Color.Black),yPt);
gph.DrawString("单元(万)",newFont("宋体",12),Brushes.Black,newPointF(0,7));
for(inti=1;i<=12;i++)
{
//画Y轴刻度
if(i<11)
{
gph.DrawString((i*10).ToString(),newFont("宋体",11),Brushes.Black,newPointF(cPt.X-30,cPt.Y-i*30-6));
gph.DrawLine(Pens.Black,cPt.X-3,cPt.Y-i*30,cPt.X,cPt.Y-i*30);
}
//画X轴项目
gph.DrawString(month.Substring(0,1),newFont("宋体",11),Brushes.Black,newPointF(cPt.X+i*30-5,cPt.Y+5));
gph.DrawString(month.Substring(1,1),newFont("宋体",11),Brushes.Black,newPointF(cPt.X+i*30-5,cPt.Y+20));
if(month.Length>2)gph.DrawString(month.Substring(2,1),newFont("宋体",11),Brushes.Black,newPointF(cPt.X+i*30-5,cPt.Y+35));
//画点
gph.DrawEllipse(Pens.Black,cPt.X+i*30-1.5F,cPt.Y-d*3-1.5F,3,3);
gph.FillEllipse(newSolidBrush(Color.Black),cPt.X+i*30-1.5F,cPt.Y-d*3-1.5F,3,3);
//画数值
gph.DrawString(d.ToString(),newFont("宋体",11),Brushes.Black,newPointF(cPt.X+i*30,cPt.Y-d*3));
//画折线
if(i>1)gph.DrawLine(Pens.Red,cPt.X+(i-1)*30,cPt.Y-d*3,cPt.X+i*30,cPt.Y-d*3);
}
//保留输入图片
bMap.Save(Response.OutputStream,ImageFormat.Gif);
实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。

老尸 发表于 2015-1-19 23:02:15

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

飘飘悠悠 发表于 2015-1-25 12:07:46

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。

愤怒的大鸟 发表于 2015-2-2 22:00:59

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。

活着的死人 发表于 2015-2-8 08:46:24

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

变相怪杰 发表于 2015-2-25 05:52:26

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

小女巫 发表于 2015-3-7 17:17:06

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。

admin 发表于 2015-3-15 10:01:53

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。

小魔女 发表于 2015-3-22 00:10:13

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
页: [1]
查看完整版本: ASP.NET教程之用代码画折线图/柱形图/条形图/饼图...