public void ShowData(List <ReservoirHydrologyRecord> list) { if (list == null || list.Count == 0) { return; } this.TitleText = list[0].StationName + "站点水情曲线"; level = new LineSeries { Title = "库水位:米", Values = new ChartValues <DatasOfHydro>(), ScalesYAt = 0, Stroke = Brushes.Blue, PointRadius = 0.2, Fill = Brushes.Transparent }; warningLevel = new LineSeries { Title = "汛限水位:米", Values = new ChartValues <DatasOfHydro>(), Fill = Brushes.Transparent, ScalesYAt = 0, Stroke = Brushes.Red, PointRadius = 0.2 }; pondage = new LineSeries { Title = "蓄水量:亿立方米", Values = new ChartValues <DatasOfHydro>(), Fill = Brushes.Transparent, ScalesYAt = 1, Stroke = Brushes.Orange, PointRadius = 0.2 }; var levelList = new List <DatasOfHydro>(); var warningLevelList = new List <DatasOfHydro>(); var pondageList = new List <DatasOfHydro>(); DatasOfHydro preLevel = null; DatasOfHydro preWarningLevel = null; DatasOfHydro prePondage = null; double minimumLevel = double.MaxValue; foreach (ReservoirHydrologyRecord record in list) { if ((preLevel == null) || (!preLevel.Time.Equals(record.Time))) { preLevel = new DatasOfHydro { Data = record.Level, Time = record.Time }; levelList.Add(preLevel); if (record.Level < minimumLevel) { minimumLevel = record.Level; } } if ((record.WarningLevel > 0) && ((preWarningLevel == null) || (!preWarningLevel.Time.Equals(record.Time)))) { preWarningLevel = new DatasOfHydro { Data = record.WarningLevel, Time = record.Time }; warningLevelList.Add(preWarningLevel); if (record.WarningLevel < minimumLevel) { minimumLevel = record.WarningLevel; } } if ((record.Pondage > 0) && ((prePondage == null) || (!prePondage.Time.Equals(record.Time)))) { prePondage = new DatasOfHydro { Data = record.Pondage, Time = record.Time }; pondageList.Add(prePondage); } } this.MinY = (int)(minimumLevel * 0.9); level.Values = levelList.AsChartValues(); if (warningLevelList.Count > 0) { warningLevel.Values = warningLevelList.AsChartValues(); } if (pondageList.Count > 0) { pondage.Values = pondageList.AsChartValues(); } HydroDatas = new SeriesCollection { level, pondage, warningLevel }.Setup(new SeriesConfiguration <DatasOfHydro>().Y(m => m.Data).X(m => m.Time.ToOADate()).Y(m => m.Data)); ZFormatter = f => f.ToString(); YFormatter = l => l.ToString(); XFormatter = date => DateTime.FromOADate(date).ToString("MM.dd:HH"); this.Hint = "图片生成完成!"; }
public void ShowData(List <RiverHydrologyRecord> list) { if (list == null || list.Count == 0) { return; } this.TitleText = list[0].StationName + "站点水情曲线"; level = new LineSeries { Title = "水位:米", Values = new ChartValues <DatasOfHydro>(), ScalesYAt = 0, Stroke = Brushes.Blue, Fill = Brushes.Transparent, PointRadius = 0.2 }; warningLevel = new LineSeries { Title = "警戒水位:米", Values = new ChartValues <DatasOfHydro>(), Fill = Brushes.Transparent, ScalesYAt = 0, Stroke = Brushes.Red, PointRadius = 0.2 }; safetyLevel = new LineSeries { Title = "保证水位:米", Values = new ChartValues <DatasOfHydro>(), Fill = Brushes.Transparent, ScalesYAt = 0, Stroke = Brushes.ForestGreen, PointRadius = 0.2 }; flow = new LineSeries { Title = "流量:立方米/秒", Values = new ChartValues <DatasOfHydro>(), Fill = Brushes.Transparent, ScalesYAt = 1, Stroke = Brushes.Orange, PointRadius = 0.2 }; var levelList = new List <DatasOfHydro>(); var warningLevelList = new List <DatasOfHydro>(); var flowList = new List <DatasOfHydro>(); var safetyLevelList = new List <DatasOfHydro>(); DatasOfHydro preLevel = null; DatasOfHydro preWarningLevel = null; DatasOfHydro preFlow = null; DatasOfHydro preSafetyLevel = null; double minimumLevel = double.MaxValue; foreach (RiverHydrologyRecord record in list) { if ((preLevel == null) || (!preLevel.Time.Equals(record.Time))) { preLevel = new DatasOfHydro { Data = record.Level, Time = record.Time }; levelList.Add(preLevel); if (record.Level < minimumLevel) { minimumLevel = record.Level; } } if ((record.WarningLevel > 0) && ((preWarningLevel == null) || (!preWarningLevel.Time.Equals(record.Time)))) { preWarningLevel = new DatasOfHydro { Data = record.WarningLevel, Time = record.Time }; warningLevelList.Add(preWarningLevel); if (record.WarningLevel < minimumLevel) { minimumLevel = record.WarningLevel; } } if ((record.SafetyLevel > 0) && ((preSafetyLevel == null) || (!preSafetyLevel.Time.Equals(record.Time)))) { preSafetyLevel = new DatasOfHydro { Data = record.SafetyLevel, Time = record.Time }; safetyLevelList.Add(preSafetyLevel); if (record.SafetyLevel < minimumLevel) { minimumLevel = record.SafetyLevel; } } if ((record.Flow > 0) && ((preFlow == null) || (!preFlow.Time.Equals(record.Time)))) { preFlow = new DatasOfHydro { Data = record.Flow, Time = record.Time }; flowList.Add(preFlow); } } this.MinY = (int)(minimumLevel * 0.9); level.Values = levelList.AsChartValues(); if (warningLevelList.Count > 0) { warningLevel.Values = warningLevelList.AsChartValues(); } if (flowList.Count > 0) { flow.Values = flowList.AsChartValues(); } if (safetyLevelList.Count > 0) { safetyLevel.Values = safetyLevelList.AsChartValues(); } HydroDatas = new SeriesCollection { level, flow, warningLevel, safetyLevel }.Setup(new SeriesConfiguration <DatasOfHydro>().Y(m => m.Data).X(m => m.Time.ToOADate()).Y(m => m.Data)); ZFormatter = f => f.ToString(); YFormatter = l => l.ToString(); XFormatter = date => DateTime.FromOADate(date).ToString("MM.dd:HH"); this.Hint = "图片生成完成!"; }