private void timer1_Tick(object sender, EventArgs e) { DateTime argument = DateTime.Now; DateTime minDate = argument.AddSeconds(-TimeInterval); UpdateSeries(0, argument, minDate, gen0series); UpdateSeries(1, argument, minDate, gen1series); UpdateSeries(2, argument, minDate, gen2series); UpdateSeries(3, argument, minDate, gen3series); SwiftPlotDiagram diagram = chartControl.Diagram as SwiftPlotDiagram; diagram.AxisX.ConstantLines.AddRange(gcseries.ToArray()); gcseries.Clear(); if (AxisXRange != null) { try { AxisXRange.SetMinMaxValues(minDate, argument); } catch { // Oh yeah! Let's kill this... } } }
/// <summary> /// 加载曲线背景颜色 /// </summary> /// <param name="Diagram">曲线背景</param> /// <param name="ColorKey">颜色key值</param> public void SetBigDataChartBgColor(SwiftPlotDiagram Diagram, string ColorKey) { //DataTable ChartSets = ServiceFactory.CreateService<IChartService>().getAllChartSet(""); var req = new GetAllChartSetRequest { StrKey = "" }; var res = _chartService.GetAllChartSet(req); if (!res.IsSuccess) { throw new Exception(res.Message); } var ChartSets = res.Data; for (var i = 0; i < ChartSets.Rows.Count; i++) { if (ChartSets.Rows[i]["strKey"].ToString() == ColorKey) { Diagram.DefaultPane.BackColor = Color.FromArgb(int.Parse(ChartSets.Rows[i]["strValue"].ToString())); for (var j = 0; j < Diagram.Panes.Count; j++) { Diagram.Panes[j].BackColor = Color.FromArgb(int.Parse(ChartSets.Rows[i]["strValue"].ToString())); } } } }
// 初始化曲线 private void InitSeries() { chartControl_Main.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Right; chartControl_Main.Series.Clear(); Equipment ep = new Equipment(); if (mainList.Count > 0) { ep = mainList.First(); } seriesOne = new Series(string.Format(ep.EName), ViewType.SwiftPlot); seriesOne.Tag = ep.ID; seriesOne.ArgumentScaleType = ScaleType.DateTime; SwiftPlotSeriesView spsv1 = new SwiftPlotSeriesView(); spsv1.LineStyle.Thickness = 2; seriesOne.View = spsv1; chartControl_Main.Series.Add(seriesOne); SwiftPlotDiagram diagram_Tem = chartControl_Main.Diagram as SwiftPlotDiagram; diagram_Tem.Margins.Right = 15; //diagram_Tem.AxisX. diagram_Tem.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; diagram_Tem.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; diagram_Tem.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; diagram_Tem.AxisX.DateTimeOptions.FormatString = "HH:mm:ss"; //diagram_Tem.AxisX.GridLines.Visible = true; diagram_Tem.AxisX.Range.SideMarginsEnabled = false; diagram_Tem.AxisX.Range.ScrollingRange.SideMarginsEnabled = true; diagram_Tem.AxisX.Title.Text = "时间"; diagram_Tem.AxisX.Title.Visible = true; diagram_Tem.AxisX.Title.Alignment = StringAlignment.Far; diagram_Tem.AxisX.Title.Antialiasing = false; diagram_Tem.AxisX.Title.Font = new System.Drawing.Font("Tahoma", 8); diagram_Tem.AxisY.Range.AlwaysShowZeroLevel = false; //diagram_Tem.EnableAxisYZooming = true; //diagram_Tem.EnableAxisYScrolling = true; diagram_Tem.AxisY.Interlaced = true; diagram_Tem.AxisY.Range.SideMarginsEnabled = true; diagram_Tem.AxisY.Range.ScrollingRange.SideMarginsEnabled = true; diagram_Tem.AxisY.Title.Text = string.Format("浓度({0})", ep.Unit); diagram_Tem.AxisY.Title.Visible = true; diagram_Tem.AxisY.Title.Alignment = StringAlignment.Far; diagram_Tem.AxisY.Title.Antialiasing = false; diagram_Tem.AxisY.Title.Font = new System.Drawing.Font("Tahoma", 8); //if (diagram_Tem != null && diagram_Tem.AxisX.DateTimeMeasureUnit == DateTimeMeasurementUnit.Millisecond) // diagram_Tem.AxisX.Range.SetMinMaxValues(minDate, argument); }
private void btn_SearchHistory_Click(object sender, EventArgs e) { gridControl_History.DataSource = null; chartControl_History.Series[0].Points.Clear(); if (comboBoxEdit_ID.Text.Trim() == string.Empty) { XtraMessageBox.Show("请选择设备名称"); return; } TimeSpan ts = dateEdit_End.DateTime - dateEdit_Start.DateTime; TimeSpan ts1 = new TimeSpan(0, 0, 0, 1); if (ts < ts1) { XtraMessageBox.Show("截止时间必须大于起始时间"); return; } Equipment eq = mainList.Find(c => c.Address == Convert.ToInt64(comboBoxEdit_ID.Text)); List <EquipmentData> data = EquipmentDataDal.GetListByTime(eq.ID, dateEdit_Start.DateTime, dateEdit_End.DateTime); if (data == null || data.Count < 1) { LogLib.Log.GetLogger(this).Warn("数据库中没有记录"); return; } gridControl_History.DataSource = data; gridView_History.BestFitColumns(); data.ForEach(c => { chartControl_History.Series[0].Points.Add(new SeriesPoint(c.AddTime, c.Chroma)); }); float max = data.Max(c => c.Chroma); float min = data.Min(c => c.Chroma); // 更改曲线纵坐标描述 SwiftPlotDiagram diagram_Tem = chartControl_History.Diagram as SwiftPlotDiagram; diagram_Tem.AxisY.Title.Text = eq.EName + ":" + eq.Unit; if (eq.Range > 0) { diagram_Tem.AxisY.Range.SetMinMaxValues(0, eq.Range); } setX(data); }
void timer_Tick(object sender, EventArgs e) { if (Series1 == null || Series2 == null) { return; } DateTime argument = DateTime.Now; SeriesPoint[] pointsToUpdate1 = new SeriesPoint[interval]; SeriesPoint[] pointsToUpdate2 = new SeriesPoint[interval]; for (int i = 0; i < interval; i++) { pointsToUpdate1[i] = new SeriesPoint(argument, value1); pointsToUpdate2[i] = new SeriesPoint(argument, value2); argument = argument.AddMilliseconds(1); UpdateValues(); } DateTime minDate = argument.AddSeconds(-TimeInterval); int pointsToRemoveCount = 0; foreach (SeriesPoint point in Series1.Points) { if (point.DateTimeArgument < minDate) { pointsToRemoveCount++; } } if (pointsToRemoveCount < Series1.Points.Count) { pointsToRemoveCount--; } AddPoints(Series1, pointsToUpdate1); AddPoints(Series2, pointsToUpdate2); if (pointsToRemoveCount > 0) { Series1.Points.RemoveRange(0, pointsToRemoveCount); Series2.Points.RemoveRange(0, pointsToRemoveCount); } SwiftPlotDiagram diagram = chart.Diagram as SwiftPlotDiagram; if (diagram != null && (diagram.AxisX.DateTimeScaleOptions.MeasureUnit == DateTimeMeasureUnit.Millisecond || diagram.AxisX.DateTimeScaleOptions.ScaleMode == ScaleMode.Continuous)) { diagram.AxisX.WholeRange.SetMinMaxValues(minDate, argument); } }
private void setupChartInfoEventHandler(object sender, EventArgs e) { SetupGraph mSetup = new SetupGraph(); mSetup.ShowDialog(); try { mXInterval = mSetup.xInterval; mMin = mSetup.min; mMax = mSetup.max; if (mIsLoding) { MetroMessageBox.Show(mParent, "불러오는 중에는 변경할 수 없습니다.", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { //chart1.ChartAreas[0].AxisX.Interval = Convert.ToDouble(mXInterval); //chart1.ChartAreas[0].AxisY.Minimum = Convert.ToDouble(mMin); //chart1.ChartAreas[0].AxisY.Maximum = Convert.ToDouble(mMax); //chartControl1 //XYDiagram diagram = chartControl1.Diagram as XYDiagram; //XYDiagram diagram = (XYDiagram)chartControl1.Diagram; SwiftPlotDiagram diagram = chartControl1.Diagram as SwiftPlotDiagram; if (diagram != null) { diagram.AxisX.VisualRange.Auto = false; diagram.AxisX.VisualRange.AutoSideMargins = false; diagram.AxisY.VisualRange.MinValue = BetteryMonitoringSystem.Properties.Settings.Default.BackupAxisYLow; diagram.AxisY.VisualRange.MaxValue = BetteryMonitoringSystem.Properties.Settings.Default.BackupAxisYUpper; } } } catch (Exception ex) { MetroMessageBox.Show(mParent, ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
// 切换曲线 private void changeSeries(Equipment ep, bool isClear = true) { if (ep == null) { LogLib.Log.GetLogger(this).Warn("切换曲线时对象为空"); return; } seriesOne.Name = ep.EName; seriesOne.Tag = ep.ID; if (isClear) { seriesOne.Points.Clear(); } SwiftPlotDiagram diagram_Tem = chartControl_Main.Diagram as SwiftPlotDiagram; diagram_Tem.AxisY.Title.Text = string.Format("浓度({0})", ep.Unit); diagram_Tem.AxisX.Range.SetMinMaxValues(minTime, maxTime); if (ep.Range > 0) { diagram_Tem.AxisY.Range.SetMinMaxValues(0, ep.Range); } List <EquipmentData> datalist = EquipmentDataDal.GetListByTime(ep.ID, minTime, maxTime); if (datalist == null) { return; } datalist.ForEach(c => { SeriesPoint sp = new SeriesPoint(c.AddTime, c.Chroma); seriesOne.Points.Add(sp); }); //datalist.Aggregate }
// 设置历史曲线 private void setX(List <EquipmentData> list) { try { if (list == null || list.Count < 1) { return; } list.Sort((customer1, customer2) => customer1.AddTime.CompareTo(customer2.AddTime)); DateTime dt1 = list.First().AddTime; DateTime dt2 = list.Last().AddTime; TimeSpan ts = dt2 - dt1; SwiftPlotDiagram spd = chartControl_History.Diagram as SwiftPlotDiagram; if (ts.TotalMinutes < 1) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; spd.AxisX.Range.SetMinMaxValues(dt1, dt2); spd.AxisX.Range.ScrollingRange.SetMinMaxValues(dt1, dt2); } // 时间范围在1小时以内 else if (ts.TotalHours < 1) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Minute; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; if (dt1.AddHours(1) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddHours(1)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1天以内 else if (ts.TotalDays <= 1) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Minute; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; if (dt1.AddHours(12) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddHours(12)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1个星期以内 else if (ts.TotalDays < 7) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Hour; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Hour; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; spd.AxisX.DateTimeOptions.FormatString = "dd HH:mm"; if (dt1.AddDays(3) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddDays(3)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1个月以内 else if (ts.TotalDays < 30) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Hour; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Hour; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; spd.AxisX.DateTimeOptions.FormatString = "yyyy-MM-dd HH:mm"; if (dt1.AddDays(15) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddDays(15)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1年以内 else { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Month; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongDate; if (dt1.AddDays(30) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddDays(30)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } } catch (Exception e) { LogLib.Log.GetLogger(this).Warn(e); } }
private void simpleButton3_Click(object sender, EventArgs e) { gridControl2.DataSource = null; chartControl2.Series[0].Points.Clear(); if (comboBoxEdit1.Text.Trim() == string.Empty) { XtraMessageBox.Show("请选择设备名称"); return; } if (comboBoxEdit4.Text.Trim() == string.Empty) { XtraMessageBox.Show("请选择气体名称"); return; } TimeSpan ts = dateEdit2.DateTime - dateEdit1.DateTime; TimeSpan ts1 = new TimeSpan(0, 0, 0, 1); if (ts < ts1) { XtraMessageBox.Show("截止时间必须大于起始时间"); return; } Equipment eq = mainList.Find(c => c.Name == comboBoxEdit1.Text.Trim() && c.GasName == comboBoxEdit4.Text.Trim()); //9.17格式化日期和时间 //string str1 = dateEdit1.Text; //DateTime format_time1; //DateTime.TryParse(str1, out format_time1); //str1 = format_time1.ToString("yyyy-MM-dd HH:mm:ss"); //string str2 = dateEdit2.Text; //DateTime format_time2; //DateTime.TryParse(str2, out format_time2); //str2 = format_time2.ToString("yyyy-MM-dd HH:mm:ss"); //List<EquipmentData> data = InputDataDal.GetListByTime(eq.ID, str1, str2); //9.17格式化日期和时间 List <EquipmentData> data = InputDataDal.GetListByTime(eq.ID, dateEdit1.DateTime, dateEdit2.DateTime); if (data == null || data.Count < 1) { LogLib.Log.GetLogger(this).Warn("数据库中没有记录"); return; } gridControl2.DataSource = data; gridView2.BestFitColumns(); data.ForEach(c => { chartControl2.Series[0].Points.Add(new SeriesPoint(c.AddTime, c.Chroma)); }); float max = data.Max(c => c.Chroma); float min = data.Min(c => c.Chroma); textEdit7.Text = max.ToString(); textEdit5.Text = min.ToString(); textEdit6.Text = ((max + min) / 2).ToString(); // 更改曲线纵坐标描述 SwiftPlotDiagram diagram_Tem = chartControl2.Diagram as SwiftPlotDiagram; diagram_Tem.AxisY.Title.Text = comboBoxEdit4.Text + ":" + data.First().Unit; if (eq.Max > 0) { diagram_Tem.AxisY.Range.SetMinMaxValues(0, eq.Max); } setX(data); }
private void TimeDrawLine() { if (chartControl1.Series.Count < 1) { return; } //构建 表格,用于绑定 AnalogBll al = DeviceObj.GetDevice().AnalogList.Find(delegate(AnalogBll abll) { return(abll.AnalogInfo.SignalName == cbSignalName.Text ? true : false); }); object svalue = al.AnalogInfo.Value; DateTime dtime = DateTime.Now; //如果图中最后一个点 的时间 是最新一个点的时间,则直接返回 if (chartControl1.Series[0].Points.Count > 0) { if (PreTime != null) { if (PreTime == dtime) { return; } } } //否则,将最新点的时间 记录下来 PreTime = dtime; DateTime argument = PreTime; DateTime minDate = argument.AddSeconds(-TimeInterval); //需要移除的点个数 int pointsToRemoveCount = 0; //如果 某个点的时间小于坐标轴最小时间,则+1 foreach (SeriesPoint point in chartControl1.Series[0].Points) { if (point.DateTimeArgument < minDate) { pointsToRemoveCount++; } } //如果 ........? if (pointsToRemoveCount < chartControl1.Series[0].Points.Count) { pointsToRemoveCount--; } SeriesPoint pointsToUpdate = new SeriesPoint(argument, svalue);//Convert.ToDouble(String.Format("{0:F}", Dr[0]["信号值"])) //将最新点 添加到显示序列 chartControl1.Series[0].Points.Add(pointsToUpdate); if (pointsToRemoveCount > 0) { chartControl1.Series[0].Points.RemoveRange(0, pointsToRemoveCount); } SwiftPlotDiagram diagram = chartControl1.Diagram as SwiftPlotDiagram; if (diagram != null && diagram.AxisX.DateTimeMeasureUnit == DateTimeMeasurementUnit.Millisecond) { diagram.AxisX.Range.SetMinMaxValues(minDate, argument); } diagram.EnableAxisYScrolling = true; diagram.EnableAxisYZooming = true; }
private void Gethistorydata(object parm) { DataTable dataTable = (parm as List <object>)[0] as DataTable; Series[] listSeries = (parm as List <object>)[1] as Series[]; List <int> listeqid = (parm as List <object>)[2] as List <int>; Stopwatch watch = new Stopwatch(); watch.Start(); List <EquipmentData> data = EquipmentDataDal.GetListByTime2(String.Join(",", listeqid), dateEdit1.DateTime, dateEdit2.DateTime); Trace.WriteLine("get database: " + watch.Elapsed); watch.Restart(); IEnumerable <IGrouping <string, EquipmentData> > gridTable = data.GroupBy(c => c.AddTimeStr); foreach (var item in gridTable) { DataRow row = dataTable.NewRow(); row[0] = item.Key; row[1] = item.FirstOrDefault().Unit; List <EquipmentData> list2 = item.OrderBy(c => c.ID).ToList(); for (int i = 0; i < list2.Count; i++) { row[i + 2] = list2[i].Chroma; } dataTable.Rows.Add(row); } Trace.WriteLine("table foreach: " + watch.Elapsed); watch.Restart(); IEnumerable <IGrouping <int, EquipmentData> > chartTable = data.GroupBy(c => c.EquipmentID); foreach (var item in chartTable) { Series series = listSeries.FirstOrDefault(c => ((int)c.Tag) == item.Key); foreach (var item2 in item) { series.Points.Add(new SeriesPoint(item2.AddTimeStr, item2.Chroma)); } } Trace.WriteLine("series foreach: " + watch.Elapsed); watch.Restart(); this.Invoke(new Action <DataTable>((datatable) => this.gridControl2.DataSource = datatable), dataTable); Trace.WriteLine("banding table: " + watch.Elapsed); watch.Restart(); //gridView2.BestFitColumns(); this.Invoke(new Action <Series[], IEnumerable <IGrouping <string, EquipmentData> > >((listseries, gridtable) => { //chartControl2. this.chartControl2.Series.AddRange(listseries); Trace.WriteLine("bangding series: " + watch.Elapsed); watch.Stop(); if (this.chartControl2.Series.Count <= 0) { this.chartControl2.Series.Add(new Series("曲线", ViewType.SwiftPlot)); } //// 更改曲线纵坐标描述 SwiftPlotDiagram diagram_Tem = this.chartControl2.Diagram as SwiftPlotDiagram; diagram_Tem.EnableAxisXScrolling = true; diagram_Tem.AxisY.Title.Text = "浓度"; setX(DateTime.Parse(gridtable.FirstOrDefault().Key), DateTime.Parse(gridtable.LastOrDefault().Key)); }), listSeries, gridTable); }
private void setX(DateTime dt1, DateTime dt2) { try { TimeSpan ts = dt2 - dt1; SwiftPlotDiagram spd = chartControl2.Diagram as SwiftPlotDiagram; if (ts.TotalMinutes < 1) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; spd.AxisX.Range.SetMinMaxValues(dt1, dt2); spd.AxisX.Range.ScrollingRange.SetMinMaxValues(dt1, dt2); } // 时间范围在1小时以内 else if (ts.TotalHours < 1) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; if (dt1.AddHours(1) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddHours(1)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1天以内 else if (ts.TotalDays <= 1) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; if (dt1.AddHours(12) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddHours(12)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1个星期以内 else if (ts.TotalDays < 7) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Hour; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; spd.AxisX.DateTimeOptions.FormatString = "dd HH:mm"; if (dt1.AddDays(3) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddDays(3)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1个月以内 else if (ts.TotalDays < 30) { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Hour; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.Custom; spd.AxisX.DateTimeOptions.FormatString = "yyyy-MM-dd HH:mm"; if (dt1.AddDays(15) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddDays(15)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } // 1年以内 else { spd.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Month; spd.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Day; spd.AxisX.DateTimeOptions.Format = DateTimeFormat.LongDate; if (dt1.AddDays(30) > dt2) { spd.AxisX.Range.SetMinMaxValues(dt1, dt2); } else { spd.AxisX.Range.SetMinMaxValues(dt1, dt1.AddDays(30)); } spd.AxisX.Range.ScrollingRange.MinValue = dt1; spd.AxisX.Range.ScrollingRange.MaxValue = dt2; } } catch (Exception e) { LogLib.Log.GetLogger(this).Warn(e); } }
// 查询数据 private void simpleButton3_Click_1(object sender, EventArgs e) { try { gridControl2.DataSource = null; chartControl2.Series.Clear(); gridView2.Columns.Clear(); if (checkedComboBoxEdit1.Text.Trim() == string.Empty) { XtraMessageBox.Show("请选择设备"); return; } TimeSpan ts = dateEdit2.DateTime - dateEdit1.DateTime; TimeSpan ts1 = new TimeSpan(0, 0, 0, 1); if (ts < ts1) { XtraMessageBox.Show("截止时间必须大于起始时间"); return; } DateTime dt1 = DateTime.MinValue; DateTime dt2 = DateTime.MaxValue; DataTable dataTable = new DataTable(); // 列计数器 int lolumnIndex = 1; // 最大的行值 int maxRowNum = -1; foreach (CheckedListBoxItem item in checkedComboBoxEdit1.Properties.Items) { if (item.CheckState != CheckState.Checked) { continue; } List <EquipmentData> data = EquipmentDataDal.GetListByTime(Convert.ToInt32(item.Value), dateEdit1.DateTime, dateEdit2.DateTime); if (data == null || data.Count < 1) { continue; } // 还没有数据的时候,增加时间和单位列 if (dataTable.Columns.Count <= 0) { dataTable.Columns.Add("时间"); dataTable.Columns.Add("单位"); } dataTable.Columns.Add(item.Description); lolumnIndex++; Series series = new Series(item.Description, ViewType.SwiftPlot); series.ArgumentScaleType = ScaleType.DateTime; // 行计数器 int rowNum = 0; data.ForEach(c => { series.Points.Add(new SeriesPoint(c.AddTime, c.Chroma)); DataRow dataRow; if (rowNum > maxRowNum - 1) { dataRow = dataTable.NewRow(); dataTable.Rows.Add(dataRow); } else { dataRow = dataTable.Rows[rowNum]; } // 说明需要增加时间和单位数据 if (lolumnIndex == 2 || rowNum > maxRowNum - 1) { dataRow[0] = c.AddTime; dataRow[1] = c.Unit; } dataRow[lolumnIndex] = c.Chroma; rowNum++; }); maxRowNum = maxRowNum > rowNum ? maxRowNum : rowNum; float max = data.Max(c => c.Chroma); float min = data.Min(c => c.Chroma); textEdit7.Text = max.ToString(); textEdit5.Text = min.ToString(); textEdit6.Text = ((max + min) / 2).ToString(); //data.Sort((customer1, customer2) => customer1.AddTime.CompareTo(customer2.AddTime)); //if (dt1 == DateTime.MinValue) //{ // dt1 = data.First().AddTime; //} //else //{ // dt1 = dt1 < data.First().AddTime ? dt1 : data.First().AddTime; //} //if (dt2 == DateTime.MaxValue) //{ // dt2 = data.Last().AddTime; //} //else //{ // dt2 = dt2 > data.Last().AddTime ? dt2 : data.Last().AddTime; //} chartControl2.Series.Add(series); } gridControl2.DataSource = dataTable; gridView2.BestFitColumns(); if (chartControl2.Series.Count <= 0) { chartControl2.Series.Add(new Series("曲线", ViewType.SwiftPlot)); } //// 更改曲线纵坐标描述 SwiftPlotDiagram diagram_Tem = chartControl2.Diagram as SwiftPlotDiagram; diagram_Tem.EnableAxisXScrolling = true; diagram_Tem.AxisY.Title.Text = "浓度"; //diagram_Tem.AxisX.DateTimeGridAlignment = DateTimeMeasurementUnit.Minute; //diagram_Tem.AxisX.DateTimeMeasureUnit = DateTimeMeasurementUnit.Second; //diagram_Tem.AxisX.DateTimeOptions.Format = DateTimeFormat.LongTime; //diagram_Tem.AxisX.Range.ScrollingRange.Auto = false; //diagram_Tem.AxisX.Range.ScrollingRange.SetMinMaxValues(dt1.AddMinutes(-1), dt2.AddMinutes(1)); //diagram_Tem.AxisX.Range.Auto = false; //diagram_Tem.AxisX.Range.SetMinMaxValues(dt1, dt1.AddMinutes(2)); //if (dt1 != DateTime.MinValue && dt2 != DateTime.MaxValue) //{ // setX(dt1, dt2); //} //9.16从时间控件上获取的值,与数据库记录格式不统一,须做进一步处理 //9.18格式化日期,以2015-0X-0X方式对齐 //string str1 = dateEdit1.Text; //DateTime format_time1; //DateTime.TryParse(str1, out format_time1); //str1 = format_time1.ToString("yyyy-MM-dd HH:mm:ss"); //string str2 = dateEdit2.Text; //DateTime format_time2; //DateTime.TryParse(str2, out format_time2); //str2 = format_time2.ToString("yyyy-MM-dd HH:mm:ss"); //List<EquipmentData> data = EquipmentDataDal.GetListByTime(eq.ID, dateEdit1.DateTime, dateEdit2.DateTime) //if (eq.Max > 0) //{ // diagram_Tem.AxisY.Range.SetMinMaxValues(0, eq.Max); //} //chartControl2.Series.EndUpdate(); } catch (Exception ex) { LogLib.Log.GetLogger(this).Warn(ex); } }