您的位置:首页 > 编程语言 > ASP

先发个绘制曲线图的:用ASP.NET with C# 绘制曲线图(Curve图)

2006-07-27 15:09 645 查看
画曲线图,网上有很多代码可以参考,也有不少开放的组件可以用,但是我是本着自己能写就自己写的原则,毕竟自己写的代码所有过程清楚明白,放心!错了也得了一个教训,值得!

网上的例子多数画曲线图是用DrawLine()函数将各个点一点一点连接起来,所以大部分时候也叫折线图。但是.NET中还有一个DrawCurve()函数,它可以直接画出一条曲线或者折线,还可以设置张力(Tension)值,比用DrawLine()方便德多也好用得多!

好了,不废话,先看看最终生成的效果图:

曲线图可以缩放,随意定义X轴和Y轴代表的大小,还可以定义Y轴的起始值,张力值等等。全部元素颜色都可以自定义。

//初始化和填充图像区域,画出边框,初始标题
private void InitializeGraph()
private void SetAxisText(ref Graphics objGraphics)
private void SetXAxis(ref Graphics objGraphics)

private void SetYAxis(ref Graphics objGraphics)
//初始化标题
private void CreateTitle(ref Graphics objGraphics)
private void DrawContent(ref Graphics objGraphics)
if(Keys.Length == Values.Length)
Pen CurvePen = new Pen(CurveColor,1);
PointF[] CurvePointF = new PointF[Keys.Length];
float keys = 0;
float values = 0;
float Offset1 = (Height-100) + YSliceBegin;
float Offset2 = (YSlice/50)*(50/YSliceValue);

for(int i=0;i<Keys.Length;i++)
keys = XSlice*i+100;
values = Offset1 - Values[i]*Offset2;
CurvePointF[i] = new PointF(keys,values);
}
objGraphics.DrawCurve(CurvePen,CurvePointF,Tension);
}
else
objGraphics.DrawString("Error!The length of Keys and Values must be same!",new Font("宋体",16),new SolidBrush(TextColor),new Point(150,Height/2));
}
}
由于X轴Y轴都有缩放,所以要设置两个编译量Offset1和Offset2,使曲线产生相应变化。

至此,曲线图完成,当然,画折线也是可以的,下图就是更改属性后生成的折线,数值和第一幅图片一样。



由于int值和float值之间的转换有误差,所以设置缩放某些值的时候曲线会产生小许误差,知道如何解决的请指教,直接提出或Mail我,我Mail是kenblove@gmail.com

收到很多朋友的Mail说代码不全,工作太忙近期都不能更新blog和讲解了。放出源代码,大家自己看吧!

点击下载Curve.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: