using Arction.Wpf.ChartingMVVM.Axes; using Arction.Wpf.ChartingMVVM.SeriesXY; using Arction.Wpf.ChartingMVVM; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using Txgy.Microseismic.BaseLib.Models; namespace Txgy.EWS.Client.PageModule.Models { public class WavesModel { // Constants double YMin = 30000; // Minimal y-value. double YMax = 35000; // Maximal y-value. public AxisX GetAxisX(int XMax) { AxisX axisX = new AxisX(); axisX.ScrollPosition = 0; axisX.ScrollMode = XAxisScrollMode.Stepping; axisX.Maximum = XMax; axisX.SweepingGap = 1; //axisX.AxisColor = Colors.Blue; //axisX.LabelsColor = Colors.Black; //axisX.GridStripColor = Colors.Black; //axisX. axisX.Title.Visible = false; return axisX; } public List CreateYAxisPingPu(List stationModels, LightningChart curChart) { List axisYList = new List(); foreach (var item in stationModels) { AxisY axisYZ = new AxisY(curChart.ViewXY); //添加Z分量波形 if (item.dz.Count > 0) { axisYZ.SetRange(item.dz.Min(), item.dz.Max()); } axisYZ.AllowAutoYFit = false; axisYZ.Title.Font = new WpfFont("Segoe UI", 10, false, false); axisYZ.Title.Text = string.Format("Ch{0}.Z", item.Name); axisYZ.Title.Angle = 0; //axisYZ.Title.Color = Colors.Black; //axisYZ.Title. axisYZ.Units.Visible = false; axisYList.Add(axisYZ); //添加N分量波形 AxisY axisYN = new AxisY(curChart.ViewXY); if (item.dn.Count > 0) { axisYN.SetRange(item.dn.Min(), item.dn.Max()); } axisYN.Title.Font = new WpfFont("Segoe UI", 10, false, false); axisYN.Title.Text = string.Format("Ch{0}.N", item.Name); axisYN.Title.Angle = 0; //axisYN.Title.Color = Colors.Black; axisYN.Units.Visible = false; axisYList.Add(axisYN); //添加E分量波形 AxisY axisYE = new AxisY(curChart.ViewXY); if (item.de.Count > 0) { axisYE.SetRange(item.de.Min(), item.de.Max()); } axisYE.Title.Font = new WpfFont("Segoe UI", 10, false, false); axisYE.Title.Text = string.Format("Ch{0}.E", item.Name); axisYE.Title.Angle = 0; //axisYE.Title.Color = Colors.Black; axisYE.Units.Visible = false; axisYList.Add(axisYE); } return axisYList; } public List GetSampleDataSeriesPingPu(List stationModels, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency) { List sampleList = new List(); for (int i = 0; i < stationModels.Count; i++) { //Bug,在波形数据少于台站数量时,出现错误 if (i < axisY.Count) { } //Z SampleDataSeries seriesZ = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3]); seriesZ.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesZ.LineStyle.Color = System.Windows.Media.Colors.Blue; seriesZ.SamplingFrequency = samplingFrequency; seriesZ.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesZ.LineStyle.Width = 1; seriesZ.LineStyle.AntiAliasing = LineAntialias.None; seriesZ.ScrollModePointsKeepLevel = 1; seriesZ.ScrollingStabilizing = true; seriesZ.AllowUserInteraction = false; //Set custom colored palette System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(seriesZ.LineStyle.Color, System.Windows.Media.Colors.Gray, 50); System.Windows.Media.Color colorCenter = seriesZ.LineStyle.Color; seriesZ.ValueRangePalette.Steps.Clear(); //Remove existing palette steps seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, -100)); seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorCenter, 0)); seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesZ); //E SampleDataSeries seriesE = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 1]); seriesE.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesE.LineStyle.Color = System.Windows.Media.Colors.Red; seriesE.SamplingFrequency = samplingFrequency; seriesE.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesE.LineStyle.Width = 1; seriesE.LineStyle.AntiAliasing = LineAntialias.None; seriesE.ScrollModePointsKeepLevel = 1; seriesE.ScrollingStabilizing = true; seriesE.AllowUserInteraction = false; //Set custom colored palette //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50); //System.Windows.Media.Color colorCenter = series.LineStyle.Color; //seriesE.ValueRangePalette.Steps.Clear(); //Remove existing palette steps //seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, -100)); //seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorCenter, 0)); //seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesE); //N SampleDataSeries seriesN = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 2]); seriesN.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesN.LineStyle.Color = System.Windows.Media.Colors.Green; seriesN.SamplingFrequency = samplingFrequency; seriesN.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesN.LineStyle.Width = 1; seriesN.LineStyle.AntiAliasing = LineAntialias.None; seriesN.ScrollModePointsKeepLevel = 1; seriesN.ScrollingStabilizing = true; seriesN.AllowUserInteraction = false; //Set custom colored palette //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50); //System.Windows.Media.Color colorCenter = series.LineStyle.Color; //seriesN.ValueRangePalette.Steps.Clear(); //Remove existing palette steps //seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, -100)); //seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorCenter, 0)); //seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesN); } return sampleList; } public List CreateYAxisPingPu(Dictionary sms, LightningChart curChart) //public List CreateYAxisPingPu(int StationCount, LightningChart curChart) { List axisYList = new List(); foreach (var item in sms.Keys) { //add Z AxisY axisYZ = new AxisY(curChart.ViewXY); axisYZ.SetRange(YMin, YMax); axisYZ.AllowAutoYFit = false; axisYZ.Title.Font = new WpfFont("Segoe UI", 10, false, false); axisYZ.Title.Text = string.Format("Ch{0}.Z", item); axisYZ.Title.Angle = 0; //axisYZ.Title. axisYZ.Units.Visible = false; axisYList.Add(axisYZ); //add E AxisY axisYE = new AxisY(curChart.ViewXY); axisYE.SetRange(YMin, YMax); axisYE.Title.Font = new WpfFont("Segoe UI", 10, false, false); axisYE.Title.Text = string.Format("Ch{0}.E", item); axisYE.Title.Angle = 0; axisYE.Units.Visible = false; axisYList.Add(axisYE); //add N AxisY axisYN = new AxisY(curChart.ViewXY); axisYN.SetRange(YMin, YMax); axisYN.Title.Font = new WpfFont("Segoe UI", 10, false, false); axisYN.Title.Text = string.Format("Ch{0}.N", item); axisYN.Title.Angle = 0; axisYN.Units.Visible = false; axisYList.Add(axisYN); } //for (int i = 0; i < sms.Count; i++) //{ //} return axisYList; } public List GetSampleDataSeriesPingPu(Dictionary sms, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency) { List sampleList = new List(); for (int i = 0; i < sms.Count; i++) { //Z SampleDataSeries seriesZ = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3]); seriesZ.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesZ.LineStyle.Color = System.Windows.Media.Colors.Blue; seriesZ.SamplingFrequency = samplingFrequency; seriesZ.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesZ.LineStyle.Width = 1; seriesZ.LineStyle.AntiAliasing = LineAntialias.None; seriesZ.ScrollModePointsKeepLevel = 1; seriesZ.ScrollingStabilizing = true; seriesZ.AllowUserInteraction = false; //Set custom colored palette System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(seriesZ.LineStyle.Color, System.Windows.Media.Colors.Black, 50); System.Windows.Media.Color colorCenter = seriesZ.LineStyle.Color; seriesZ.ValueRangePalette.Steps.Clear(); //Remove existing palette steps seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, -100)); seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorCenter, 0)); seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesZ); //E SampleDataSeries seriesE = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 1]); seriesE.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesE.LineStyle.Color = System.Windows.Media.Colors.Red; seriesE.SamplingFrequency = samplingFrequency; seriesE.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesE.LineStyle.Width = 1; seriesE.LineStyle.AntiAliasing = LineAntialias.None; seriesE.ScrollModePointsKeepLevel = 1; seriesE.ScrollingStabilizing = true; seriesE.AllowUserInteraction = false; //Set custom colored palette //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50); //System.Windows.Media.Color colorCenter = series.LineStyle.Color; seriesE.ValueRangePalette.Steps.Clear(); //Remove existing palette steps seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, -100)); seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorCenter, 0)); seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesE); //N SampleDataSeries seriesN = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i * 3 + 2]); seriesN.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesN.LineStyle.Color = System.Windows.Media.Colors.Green; seriesN.SamplingFrequency = samplingFrequency; seriesN.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesN.LineStyle.Width = 1; seriesN.LineStyle.AntiAliasing = LineAntialias.None; seriesN.ScrollModePointsKeepLevel = 1; seriesN.ScrollingStabilizing = true; seriesN.AllowUserInteraction = false; //Set custom colored palette //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50); //System.Windows.Media.Color colorCenter = series.LineStyle.Color; seriesN.ValueRangePalette.Steps.Clear(); //Remove existing palette steps seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, -100)); seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorCenter, 0)); seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesN); } return sampleList; } public List GetSampleDataSeriesDieJia(List sms, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency) { List sampleList = new List(); for (int i = 0; i < sms.Count; i++) { //Z SampleDataSeries seriesZ = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]); seriesZ.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesZ.LineStyle.Color = System.Windows.Media.Colors.Blue; seriesZ.SamplingFrequency = samplingFrequency; seriesZ.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesZ.LineStyle.Width = 1; seriesZ.LineStyle.AntiAliasing = LineAntialias.None; seriesZ.ScrollModePointsKeepLevel = 1; seriesZ.ScrollingStabilizing = true; seriesZ.AllowUserInteraction = false; //Set custom colored palette System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(seriesZ.LineStyle.Color, System.Windows.Media.Colors.Black, 50); System.Windows.Media.Color colorCenter = seriesZ.LineStyle.Color; seriesZ.ValueRangePalette.Steps.Clear(); //Remove existing palette steps seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, -100)); seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorCenter, 0)); seriesZ.ValueRangePalette.Steps.Add(new PaletteStep(seriesZ.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesZ); //E SampleDataSeries seriesE = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]); seriesE.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesE.LineStyle.Color = System.Windows.Media.Colors.Red; seriesE.SamplingFrequency = samplingFrequency; seriesE.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesE.LineStyle.Width = 1; seriesE.LineStyle.AntiAliasing = LineAntialias.None; seriesE.ScrollModePointsKeepLevel = 1; seriesE.ScrollingStabilizing = true; seriesE.AllowUserInteraction = false; //Set custom colored palette //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50); //System.Windows.Media.Color colorCenter = series.LineStyle.Color; seriesE.ValueRangePalette.Steps.Clear(); //Remove existing palette steps seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, -100)); seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorCenter, 0)); seriesE.ValueRangePalette.Steps.Add(new PaletteStep(seriesE.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesE); //N SampleDataSeries seriesN = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]); seriesN.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; seriesN.LineStyle.Color = System.Windows.Media.Colors.Green; seriesN.SamplingFrequency = samplingFrequency; seriesN.FirstSampleTimeStamp = 1.0 / samplingFrequency; seriesN.LineStyle.Width = 1; seriesN.LineStyle.AntiAliasing = LineAntialias.None; seriesN.ScrollModePointsKeepLevel = 1; seriesN.ScrollingStabilizing = true; seriesN.AllowUserInteraction = false; //Set custom colored palette //System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50); //System.Windows.Media.Color colorCenter = series.LineStyle.Color; seriesN.ValueRangePalette.Steps.Clear(); //Remove existing palette steps seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, -100)); seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorCenter, 0)); seriesN.ValueRangePalette.Steps.Add(new PaletteStep(seriesN.ValueRangePalette, colorEdge, 100)); sampleList.Add(seriesN); } return sampleList; } public List CreateYAxis(int channelCount, LightningChart curChart) { List axisYList = new List(); for (int i = 0; i < channelCount; i++) { AxisY axisY = new AxisY(curChart.ViewXY); //AxisY axisY = new AxisY(); axisY.SetRange(YMin, YMax); axisY.Title.Font = new WpfFont("Segoe UI", 10, false, false); axisY.Title.Text = string.Format("Ch {0}", i + 1); axisY.Title.Angle = 0; axisY.Units.Visible = false; axisYList.Add(axisY); } return axisYList; } public List GetSampleDataSeries(int channelCount, LightningChart curChart, AxisX xAxes, AxisYCollection axisY, double samplingFrequency) { List sampleList = new List(); for (int i = 0; i < channelCount; i++) { SampleDataSeries series = new SampleDataSeries(curChart.ViewXY, xAxes, axisY[i]); series.SampleFormat = SampleFormat.DoubleFloat; //series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; series.LineStyle.Color = DefaultColors.SeriesForBlackBackgroundWpf[i % DefaultColors.SeriesForBlackBackgroundWpf.Length]; series.SamplingFrequency = samplingFrequency; series.FirstSampleTimeStamp = 1.0 / samplingFrequency; series.LineStyle.Width = 1; series.LineStyle.AntiAliasing = LineAntialias.None; series.ScrollModePointsKeepLevel = 1; series.ScrollingStabilizing = true; series.AllowUserInteraction = false; //Set custom colored palette System.Windows.Media.Color colorEdge = ChartTools.CalcGradient(series.LineStyle.Color, System.Windows.Media.Colors.Black, 50); System.Windows.Media.Color colorCenter = series.LineStyle.Color; series.ValueRangePalette.Steps.Clear(); //Remove existing palette steps series.ValueRangePalette.Steps.Add(new PaletteStep(series.ValueRangePalette, colorEdge, -100)); series.ValueRangePalette.Steps.Add(new PaletteStep(series.ValueRangePalette, colorCenter, 0)); series.ValueRangePalette.Steps.Add(new PaletteStep(series.ValueRangePalette, colorEdge, 100)); sampleList.Add(series); } return sampleList; } } }