zoukankan      html  css  js  c++  java
  • Dev的Chart控件数据绑定winform

    1、折线图

    图示效果:

    代码:

    public void Init()
            {
                ChartControl.BeginInit();
                ChartControl.SeriesDataMember = "SensorKey";
                ChartControl.SeriesTemplate.SetDataMembers("SensorIndex", "SensorValue");
                ChartControl.SeriesTemplate.CrosshairLabelPattern = "{SensorKey}
     Index:{A:0}  值:{V:0.000 mm}  时间:{FullDate}";
                LineSeriesView view = new LineSeriesView();
                view.LineStyle.Thickness = 2;
                view.LineStyle.LineJoin = LineJoin.Round;
                ChartControl.SeriesTemplate.View = view;
                ChartControl.DataSource = ReadDataFromFile();
                XYDiagram diagram = new XYDiagram();
                diagram.EnableAxisXScrolling = true;
                diagram.EnableAxisXZooming = true;
                diagram.EnableAxisYScrolling = true;
                diagram.EnableAxisYZooming = true;
                diagram.AxisX.WholeRange.AlwaysShowZeroLevel = false;
                diagram.AxisX.Title.Text = "MySensor";
                diagram.AxisX.Title.Visibility = DefaultBoolean.True;
                diagram.AxisX.WholeRange.SideMarginsValue = 1;
                diagram.AxisX.WholeRange.SetMinMaxValues(1, i);
                //diagram.AxisX.Label.TextPattern = " {A:0.}";//x轴文字格式
                ChartControl.Diagram = diagram;
                ChartControl.Legend.MarkerMode = LegendMarkerMode.CheckBoxAndMarker;
                ChartControl.Legend.Border.Visibility = DefaultBoolean.False;//能见度
                ChartControl.Legend.BackColor = Color.Transparent;
                ChartControl.Legend.Direction = LegendDirection.TopToBottom;//CheckBox按钮顺序
                ChartControl.CrosshairOptions.CrosshairLabelMode = CrosshairLabelMode.ShowCommonForAllSeries;//ShowForNearestSeries(显示最近)//ShowCommonForAllSeries(显示全部)//ShowForEachSeries(分开显示每个,不好用)
                ChartControl.CrosshairOptions.LinesMode = CrosshairLinesMode.Auto;
                ChartControl.CrosshairOptions.ShowArgumentLabels = false;
                //ChartControl.LegendItemChecked += ChartControl_LegendItemChecked;
                ChartControl.EndInit();
            }

    //该方法主要是填充数据,需要自行添加数据,方式如下

    public List<SensorDataPoint> ReadDataFromFile()
    {
    List<SensorDataPoint> dataSource = new List<SensorDataPoint>();

    FileStream fs = null;
    try
    {

    dataSource.Add(new SensorDataPoint("Sensor1",
    Convert.ToDouble(cells[sensor1]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor2",
    Convert.ToDouble(cells[sensor2]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor3",
    Convert.ToDouble(cells[sensor3]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor4",
    Convert.ToDouble(cells[sensor4]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor5",
    Convert.ToDouble(cells[sensor5]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor6",
    Convert.ToDouble(cells[sensor6]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor7",
    Convert.ToDouble(cells[sensor7]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor8",
    Convert.ToDouble(cells[sensor8]), i, Convert.ToDateTime(cells[time])));
    dataSource.Add(new SensorDataPoint("Sensor9",
    Convert.ToDouble(cells[sensor9]), i, Convert.ToDateTime(cells[time])));

    }
    catch
    {
    throw new Exception("It's impossible to load ");
    }
    finally
    {
    reader?.Close();
    fs?.Close();
    }
    return dataSource;
    }

    //modle
     public class SensorDataPoint
        {
            public string SensorKey { get; private set; }
            public double SensorValue { get; private set; }
    
            public double SensorIndex { get; private set; }
            public DateTime FullDate { get; private set; }
    
    
    
    
            internal SensorDataPoint(string sensorKey, double sensorValue, int sensorIndex, DateTime fullDate)
            {
                SensorKey = sensorKey;
                SensorValue = sensorValue;
                SensorIndex = sensorIndex;
                FullDate = fullDate;
            }
    
    
        }

    关键的地方在于,创建的modle类对应折线图的x,y轴,然后填充数据

     ChartControl.SeriesDataMember = "SensorKey";
                ChartControl.SeriesTemplate.SetDataMembers("SensorIndex", "SensorValue");
    吾生也有涯,而知也无涯,以有涯随无涯,殆已。
  • 相关阅读:
    method-r
    dtrace
    轻用其芒,动即有伤,是为凶器;深藏若拙,临机取决,是为利器!
    Git---报错:git Please move or remove them before you can merge 解决方案
    Git----拉取远程分支,git pull,git rebase,git pull --rebase的区别
    Git----查看提交日志
    Git---tag
    Git----常见工作管理总结
    【线上监控】日志上报bug处理方式总结
    接口文档所需内容
  • 原文地址:https://www.cnblogs.com/kcir/p/15011435.html
Copyright © 2011-2022 走看看