1、ChartControl
绘制曲线图,横坐标表示距离起点距离,纵坐标表示高程,均为double类型值,定义一个数据源的类。
/// <summary>/// 画图控件数据源/// </summary>public class ChartDatasource{/// <summary>/// 当前位置高度/// </summary>public double Altitude { get; set; }/// <summary>/// 距起点距离/// </summary>public double Length { get; set; }/// <summary>/// 坡度/// </summary>public double Slope { get; set; }}
绑定字段
this.chartControl_Alt.Series[0].ArgumentDataMember = "Length";this.chartControl_Alt.Series[0].ValueDataMembers[0] = "Altitude";this.chartControl_Slope.Series[0].ArgumentDataMember = "Length";this.chartControl_Slope.Series[0].ValueDataMembers[0] = "Slope";
构造一<List>,存储坐标点对,赋值即可,作为数据源。
var sourcelist=new List<ChartDatasource>();sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});sourcelist.Add(new ChartDatasource{Altitude=33,Length=0,Slope=4});.....................chartControl_Alt.DataSource = sourcelist;chartControl_Slope.DataSource = sourcelist;
显示效果如下图所示,一个数据类,存有三个字段,但绑定的字段不同,显示不同的结果,作为多个图表的数据源。
2、一个图上多条曲线
数据源类
/// <summary>/// 画图控件数据源/// </summary>public class RChartDataSource{/// <summary>/// 点号/// </summary>public string ID{ get; set; }/// <summary>/// 源高程值/// </summary>public double HeightY{ get; set; }/// <summary>/// 对比高程值/// </summary>public double HeightD{get;set;}}
之前横坐标为double类型,则控件自动按值大小显示在图表上,这里也可以用string类型为横坐标,设为ID,依此保存为1,2,3,4....
字段绑定
this.chartControl1.Series[0].ValueDataMembers[0] = "HeightY";this.chartControl1.Series[0].ArgumentDataMember = "ID";this.chartControl1.Series[1].ValueDataMembers[0] = "HeightD";this.chartControl1.Series[1].ArgumentDataMember = "ID";
这里,横坐标均绑定为一个字段ID,纵坐标为各自的值。
var sourcelist=new List<RChartDataSource>();sourcelist.Add(new RChartDataSource{ID=1,HeightY=35,HeightD=36});sourcelist.Add(new RChartDataSource{ID=2,HeightY=35,HeightD=36});sourcelist.Add(new RChartDataSource{ID=3,HeightY=35,HeightD=36});sourcelist.Add(new RChartDataSource{ID=4,HeightY=35,HeightD=36});sourcelist.Add(new RChartDataSource{ID=5,HeightY=35,HeightD=36});.....................chartControl1.DataSource = sourcelist;
显示结果如下所示:
若数据源列表发生变化,则可以重新赋值
sourcelist.Add(new (new RChartDataSource{ID=,HeightY=,HeightD=}); chartcontrol.DataSource=null; chartcontrol.DataSource=sourcelist;
3、其他
a、我们在图表上移动或点击时,需要获得当前鼠标位置所对应的横纵坐标值,可以通过以下方式获得
为ChartControl添加CustomDrawCrosshair事件,事件代码如下
double Heng = 0;double Zong = 0;private void chartControl_Alt_CustomDrawCrosshair(object sender, CustomDrawCrosshairEventArgs e){if (chartControl_Alt.DataSource != null&&IsClick){var element = e.CrosshairElements;if (element.Count() > 0)Heng = element.ElementAt(0).SeriesPoint.NumericalArgument;Zong = element.ElementAt(0).SeriesPoint.Values[0];}}
CrosshairElements还有很多其他属性,可进一步研究,可打断点查看相应属性。这里提供一种并不完善的方式,需要进一步完善。
b、设置ConstanLine线位置
var axis = chartControl_Alt.Diagram as DevExpress.XtraCharts.XYDiagram;axis.AxisX.ConstantLines[0].AxisValue = Heng;axis.AxisX.ConstantLines[0.Visible = trueaxis.AxisX.ConstantLines[1].AxisValue = 160;axis.AxisX.ConstantLines[1.Visible = true;//这里的两条线都是垂直于x轴的线,先可以通过代码添加,也可以提前在Run Designer里面添加好初始设置为不可见。
Run Designer里面有很多属性可进行设置,对控件显示效果和显示功能进行设置。




![使用 String[] values = request.getParameterValues(key);出现的问题 ,Ajax Post 提交数组参数后台无法接收](https://img-blog.csdnimg.cn/20201112220839183.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzMxNDAxOQ==,size_16,color_FFFFFF,t_70#pic_center)






