• 使用Chart控件进行实时监控


    Chart作为微软提供绘制图表的控件,在刚开始使用时非常的迷茫,因为功能强大,涉及到的知识多,

    一开始难以接收过来,但后天经过查找资料,耐心学习,终于还是有了一定的收获。

    Chart相当于一个大的图纸,可以包含很多小的图纸ChartArea,一个ChartArea可以包含很多的Series,

    Series即Point,画在ChartArea上的数据。


    主要的思想就是添加Points的同时改变X轴的显示范围,以此来达到动态显示的目的。

    代码解析

    Chart的相关设置

    因为Chart控件是直接托入的,系统帮助初始化了,可以在对应的desiger.cs文件中找到。
    还有事件的注册,属性等都可以在这个文件中找到。

    //设置大小 MotorTestingChart.Height = 200; MotorTestingChart.Width = 500; //设置在series上显示数值 Series是一个集合,需要有索引的方式指定 //MotorTestingChart.Series[0].IsValueShownAsLabel = true;//IsValueShowAsLable表示是否在图表的曲线上标出以标签的形式标出值 //设置Chart的边框样式 MotorTestingChart.BorderlineColor = Color.Blue;//边框颜色 MotorTestingChart.BorderlineDashStyle = ChartDashStyle.Solid;//边框的样式 Solid表示是实线 MotorTestingChart.BorderlineWidth = 1;//边框的宽度

    //拖入Chart控件会自带一个ChartArea ChartArea mtxChartArea
    = MotorTestingChart.ChartAreas[0];//获取ChartArea mtxChartArea.BackColor = Color.Lavender;//设置ChartArea的背景颜色 //X显示的最小值 mtxChartArea.AxisX.Minimum = 0; //设置X轴的显示范围,在后续程序中将会用到 //X轴显示的最大值 mtxChartArea.AxisX.Maximum = 10; mtxChartArea.AxisY.Minimum = -1850; mtxChartArea.AxisY.Maximum = 1850; //X轴的标题 mtxChartArea.AxisX.Title = "时间"; //X轴的标题颜色 mtxChartArea.AxisX.TitleForeColor = Color.Red; //X轴的刻度颜色 mtxChartArea.AxisX.LabelStyle.ForeColor = Color.Blue; //指定自动轴的模式 mtxChartArea.AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount; //设置轴的间隔 //chartArea.AxisX.Interval = 1; mtxChartArea.AxisY.Title = "数值"; mtxChartArea.AxisY.TitleForeColor = Color.Red; mtxChartArea.AxisY.LabelStyle.ForeColor = Color.Blue; #region X和Y轴的网格线 取消网格线 mtxChartArea.AxisX.MajorGrid = new Grid() { Enabled = false }; mtxChartArea.AxisY.MajorGrid = new Grid() { Enabled = false }; #endregion
    //标题 Title mtTitle
    = new Title(); mtTitle.Name = "mtTitle"; mtTitle.Text = "飞行姿态"; //添加标题 MyIEqualityCompare为自定义的比较类,继承自IEqualityCompare接口 if (!MotorTestingChart.Titles.Contains<Title>(mtTitle, new MyIEqualityComparer<Title>())) { MotorTestingChart.Titles.Add(mtTitle); } //设置滚动条 mtxChartArea.AxisX.ScrollBar.IsPositionedInside = false; mtxChartArea.AxisX.ScrollBar.Enabled = false;
    //Legend 图例 Legend mtLegend = new Legend("mtLegend"); //mtLegend.LegendStyle = LegendStyle.Table; mtLegend.Title = "图例"; mtLegend.ForeColor = Color.Red; mtLegend.BackColor = Color.HotPink;
    if (!MotorTestingChart.Legends.Contains<Legend>(mtLegend, new MyIEqualityComparer<Legend>())) { MotorTestingChart.Legends.Add(mtLegend); } //拖入Chart控件会自带一个Series Series mtSeries = MotorTestingChart.Series[0];//获取Series mtSeries.Legend = "mtLegend";//绑定在那个图例中显示 mtSeries.LegendText = "mtxSeries";//在图例中显示的文字 mtSeries.Color = Color.Red;//线的颜色,同时也是所画图标的颜色,绑定在一起
    mtSeries.ChartType=SeriesChartType.Spline;//设置Chart类型,就是以怎样的形式画图表

    mtSerise.ChartArea=MotorTestingChart.ChartArea[0];//是通过Series来绑定ChartArea的

    Timer定时器

    这部分的代码的写在定时器注册的函数中。

    Series series = GyroscoprChart.Series[0];//获取Series series.Points.AddY(r.Next(1,100));//向Series的Points添加值 if (num0 > 10)//num是用来统计Series.Points的个数的,因为在Chart的设置中设置了X轴显示的范围为:0到10,
    { //所以Series的点个数大于10个之后就改变X数值的显示范围,以此来达到实时显示的目的,同时因为Series的Point的添加也是跟随定时器的 //所以它们配合的非常好 gyrChartArea.AxisX.Minimum
    = gyrChartcount - 10; gyrChartArea.AxisX.Maximum = gyrChartcount; }
  • 相关阅读:
    Java for循环打印九九乘法表
    java判断回文数代码实例
    java 判断回文数实例代码
    价值
    Java代码实例 判断这个数是否是素数
    Java for循环求水花仙数
    java代码实例 使用switch实现简易的计算器(实现加减乘除)
    java基础代码实例 求1100之间的奇数和偶数
    Java 判断闰年代码实例
    可以将控制台输出信息保存到本地的Log4j配置
  • 原文地址:https://www.cnblogs.com/xiaoai123/p/6911018.html
Copyright © 2020-2023  润新知