标签:
因为自己毕业需要做一个有关环境监测的项目,原理是通过无线采集环境信息,将信息实时保存到数据库,上位机是winform程序,程序需要实时的显示已经采集到的数据,并用曲线的方式表现出来,自己折腾了几天,也算是有一些小的收货,自己也是刚接触C#编程,给我的感觉非常的好。
用到的chart控件下载地址 链接: http://pan.baidu.com/s/1eSnYj3W 密码: xqhm 我用的是VS2010.
分析我的目的要求:实时刷新获取数据库的数据,将数据实时的显示到chart表上。
我的解决办法:1、处理数据库,搜索数据库内数据,并准备好,绑定数据库到表格,接着,定时刷新显示chart表格。从网上搜索的时候说可以通过将要显示的数据先存到数组或者araylist当中,我没这样,当新数据再出现的时候,报错说有了**数据,如果一直让往下存的话,感觉会越来越占内存,最终会卡死吧,所以就换了思路。
先看一下我的chart类
private void showChart_From_SQL(Chart myChart,string str_Sql,string AxisX,string title) { myChart.Series.Clear(); myChart.Width = 520; //图表宽度 myChart.Height = 320; //图表高度 myChart.BackColor = Color.Azure; //图表背景色 //myChart.Titles.Add("CO2浓度"); //图表标题 //新建连接 myChart.DataBindTable(SqlHelper.getread(str_Sql), AxisX); //注意数据绑定后,它的series是1而不是0 本来正常应该是1 博文后注 myChart.Series[0].ChartType = SeriesChartType.Spline; //myChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "yyyy-MM-dd-HH:mm:ss"; myChart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "MM-dd/HH:mm";//格式化时间样式 myChart.Series[0].IsValueShownAsLabel = false; //是否显示数据 myChart.Series[0].IsVisibleInLegend = false; //是否显示数据说明 myChart.Series[0].MarkerStyle = MarkerStyle.Circle; //线条上的数据点标志类型 myChart.Series[0].MarkerSize = 8; //标志大小 myChart.ChartAreas[0].AxisX.LineColor = Color.Blue; //X轴颜色 myChart.ChartAreas[0].AxisY.LineColor = Color.Blue; //Y轴颜色 myChart.ChartAreas[0].AxisX.LineWidth = 2; //X轴宽度 myChart.ChartAreas[0].AxisY.LineWidth = 2; //Y轴宽度 myChart.ChartAreas[0].AxisY.Title = title; }
在实际使用过程中我是通过每次清除掉series,再重新加载,所以本来是myChart.Series[1].ChartType……,我这样处理后就变成了myChart.Series[0]……
到底是什么问题导致的,我每次刷新表格时,我需要调用一遍showChart_From_SQL(Chart myChart,string str_Sql,string AxisX,string title),而每次调用势必会产生一个新的series(假设为CO2曲线图),当再次画CO2曲线时,那么会再次新建绑定myChart.DataBindTable(SqlHelper.getread(str_Sql), AxisX);就会报错,因为俩个series(CO2)冲突了。其实我也是模模糊糊的,反正这样就是行了。下面是我关于这个chart的调用
SqlStr = @"SELECT TOP 10 CO2,addTime FROM [CO2] order by addTime desc"; Time_New = Time_last; showChart_From_SQL(chart_CO2, SqlStr, "addTime","CO2浓度");
自己的第一篇博文,马马虎虎吧,记录在此,多积累!加油
标签:
原文地址:http://www.cnblogs.com/xc2444/p/5463354.html