先发个绘制曲线图的:用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
网上的例子多数画曲线图是用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
相关文章推荐
- 用ASP.NET with C# 绘制曲线图(Curve图)
- 用ASP.NET with C# 绘制曲线图(Curve图)
- 用ASP.NET with C# 绘制曲线图(Curve图)转
- 用ASP.NET with C# 绘制曲线图(Curve图)
- 用ASP.NET with C#绘制柱状图(Bar图)
- 用ASP.NET with C#绘制饼图(Pie图)
- Developing ASP.NET Custom Control With C# Builder
- Developing ASP.NET Custom Control With C# Builder
- Developing ASP.NET Custom Control With C# Builder
- ASP.NET画图系列之实现Curve图(曲线图)
- ASP.Net绘制柱状图和曲线图示例
- Asp.Net实例:C# 绘制统计图(柱状图, 折线图, 扇形图)
- Getting Started with ASP.NET Web API 2 (C#)
- ASP.NET with C#使用md5,sha1加密初探(10月21日首发)
- ASP.net with C#学习个人谈
- asp.net下使用C#实现动态绘制图表
- Asp.Net实例:C# 绘制统计图(一) ——柱状图
- C#.NET常见问题(FAQ)-如何使用2D绘图控件ZedGraph绘制坐标轴和坐标曲线
- 用 C# 绘制曲线图(Curve图,增加自动适应和多曲线绘制)
- 一個簡單的網盤(WebDrive with ASP.NET (C#))