123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using DevExpress.XtraCharts;
- using DevExpress.XtraEditors;
- using GCAS.Dto;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Linq;
- using System.Windows.Forms;
- namespace GCAS.Record
- {
- public partial class CurveForm : XtraForm
- {
- public CurveForm(string jsonData, string effectData)
- {
- InitializeComponent();
- JsonData = jsonData;
- EffectData = effectData;
- }
- public string JsonData { get; private set; }
- public string EffectData { get; private set; }
- private void CurveForm_Load(object sender, EventArgs e)
- {
- List<WeightDto> weights = new List<WeightDto>();
- List<WeightDto> effectWeights = new List<WeightDto>();
- if (!string.IsNullOrEmpty(JsonData))
- {
- try
- {
- weights = JsonConvert.DeserializeObject<List<WeightDto>>(JsonData);
- effectWeights = JsonConvert.DeserializeObject<List<WeightDto>>(EffectData);
- if (weights == null || !weights.Any())
- {
- DialogResult = DialogResult.Abort;
- return;
- }
- }
- catch (Exception)
- {
- DialogResult = DialogResult.Abort;
- }
- // Create a Chart Control object and add it to the form.
- ChartControl chart = new ChartControl
- {
- Dock = DockStyle.Fill
- };
- Controls.Add(chart);
- // Create a line series, bind it to data and add to the chart.
- Series series = new Series("净重", ViewType.Line)
- {
- DataSource = weights.Select(c => new DataPointDto(c.Time, c.Weight / 1000F)),
- ArgumentDataMember = "Date"
- };
- series.ValueDataMembers.AddRange("Value");
- chart.Series.Add(series);
- // Enable series markers.
- LineSeriesView view = (LineSeriesView)series.View;
- view.MarkerVisibility = DevExpress.Utils.DefaultBoolean.True;
- // Display series labels and customize their text format.
- series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.True;
- series.Label.ResolveOverlappingMode = ResolveOverlappingMode.HideOverlapped;
- series.Label.TextPattern = "{V:.###}T";
- // Create a chart title.
- ChartTitle chartTitle = new ChartTitle
- {
- Text = "称重曲线"
- };
- chart.Titles.Add(chartTitle);
- // Customize axes.
- XYDiagram diagram = chart.Diagram as XYDiagram;
- diagram.AxisX.Label.TextPattern = "{A:ss:fff}";
- diagram.AxisY.Label.TextPattern = "{V:.###}T";
- diagram.EnableAxisXScrolling = true;
- diagram.EnableAxisXZooming = true;
- series.CrosshairLabelPattern = @"时间:{A:ss:fff}
- 净重:{V:.###}T";
- diagram.AxisX.DateTimeScaleOptions.MeasureUnit = DateTimeMeasureUnit.Millisecond;
- diagram.AxisX.DateTimeScaleOptions.GridSpacing = 5;
- diagram.AxisX.WholeRange.SideMarginsValue = 2;
- diagram.AxisY.WholeRange.AlwaysShowZeroLevel = false;
- // Hide a legend if necessary.
- chart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.False;
- var axisX = ((XYDiagram)chart.Diagram).AxisX;
- ConstantLine endline = new ConstantLine { Color = Color.Red, AxisValue = effectWeights.First().Time, Name = "结束" };
- ConstantLine startline = new ConstantLine { Color = Color.Red, AxisValue = effectWeights.Last().Time, Name = "开始" };
- startline.LineStyle.DashStyle = endline.LineStyle.DashStyle = DashStyle.Dash;
- axisX.ConstantLines.Add(startline);
- axisX.ConstantLines.Add(endline);
- }
- }
- }
- }
|