public static void ApplyAntiSaccadeTextMarkers(ChartPlotter amplitudePlotter, bool isVisible, List <double> arrayX, List <double> arrayY, List <int> IDs, string text) { for (int i = 0; i < arrayX.Count; i++) { var xDataSource = new EnumerableDataSource <double>(new double[1] { arrayX[i] }); xDataSource.SetXMapping(x => x); var yDataSource = new EnumerableDataSource <double>(new double[1] { arrayY[i] }); yDataSource.SetYMapping(x => x); var saccadeStartCompositeDataSource = new CompositeDataSource(xDataSource, yDataSource); var marker = new MarkerPointsGraph(saccadeStartCompositeDataSource); var textMarker = new CenteredTextMarker(); textMarker.Text = $"{text}:A#{IDs[i]}"; marker.Marker = textMarker; marker.Name = $"AntiSacc{text}Label"; if (!isVisible) { marker.Visibility = Visibility.Hidden; } amplitudePlotter.Children.Add(marker); } }
public static void ApplyAntiSaccadePointMarkers(ChartPlotter amplitudePlotter, List <EyeMove> antiSaccades) { var saccadeStartFoundDataSource = new EnumerableDataSource <EyeMove>(antiSaccades.Where(x => x.IsStartFound == true)); saccadeStartFoundDataSource.SetXMapping(x => x.EyeStartTime); saccadeStartFoundDataSource.SetYMapping(x => x.EyeStartCoord); var saccadeEndFoundDataSource = new EnumerableDataSource <EyeMove>(antiSaccades.Where(x => x.IsEndFound == true)); saccadeEndFoundDataSource.SetXMapping(x => x.EyeEndTime); saccadeEndFoundDataSource.SetYMapping(x => x.EyeEndCoord); var marker = new MarkerPointsGraph(saccadeStartFoundDataSource); var markPen = new TrianglePointMarker(); markPen.Pen = new Pen(Brushes.Chartreuse, 1); markPen.Size = 7; marker.Name = "AntiSaccStart"; markPen.Fill = Brushes.Chartreuse; marker.Marker = markPen; amplitudePlotter.Children.Add(marker); marker = new MarkerPointsGraph(saccadeEndFoundDataSource); markPen = new TrianglePointMarker(); markPen.Pen = new Pen(Brushes.Gold, 1); markPen.Size = 7; marker.Name = "SaccEnd"; markPen.Fill = Brushes.Gold; marker.Marker = markPen; amplitudePlotter.Children.Add(marker); }
private void UpdatePeakValue() { for (var childIndex = PeakValue.Children.Count - 1; childIndex > 0; childIndex--) { if (PeakValue.Children[childIndex] is LineGraph || PeakValue.Children[childIndex] is MarkerPointsGraph) { PeakValue.Children.RemoveAt(childIndex); } } var xmin = double.MaxValue; var xmax = double.MinValue; var ymin = double.MaxValue; var ymax = double.MinValue; for (var peakIndex = 0; peakIndex < ViewModel.NumberOfDetectedPeaks; peakIndex++) { var peakId = peakIndex; var peak = peaks.Get(peakId); if (peak == null) { continue; } var points = peak.Keys.Select(voltage => new Point(voltage, peak[voltage].Alpha)).ToList(); xmin = Math.Min(xmin, points.Min(p => p.X)); ymin = Math.Min(ymin, points.Min(p => p.Y)); xmax = Math.Max(xmax, points.Max(p => p.X)); ymax = Math.Max(ymax, points.Max(p => p.Y)); var data = new ObservableDataSource <Point>(points); var peakData = new MarkerPointsGraph(data) { Marker = new CirclePointMarker { Pen = new Pen(new SolidColorBrush(peakColors[peakId]), 4), Fill = new SolidColorBrush(peakColors[peakId]) }, Description = new StandardDescription($"peak {peakId} value") }; PeakValue.Children.Add(peakData); } var logymin = Math.Log10(ymin); var logymax = Math.Log10(ymax); var rect = new Rect(new Point(xmin, logymin + 0.1 * logymax), new Point(xmax, logymax - 0.1 * logymax)); PeakValue.Visible = rect; PeakValue.UpdateLayout(); }
public override void updatechart(Dictionary <string, string> packagelist) { isRunning = true; pkglist = new Dictionary <string, string>(); clearLines(); //Rect rec = (t-20>0?t-20:0,t-20>0?t+10:30,t,chart.Viewport.Visible.YMax); datalist.Clear(); listgraph.Clear(); this.msr.Width = 30; datalist.Add("屏幕变化率", new ObservableDataSource <Point>()); MarkerPointsGraph mpg = new MarkerPointsGraph(markerPoints); XValueTextMarker ctm = new XValueTextMarker(this.chart.Viewport); mpg.Marker = ctm; this.chart.Children.Add(mpg); MarkerPointsGraph fmpg = new MarkerPointsGraph(framePoints); FrameValueTextMarker ftm = new FrameValueTextMarker(this.chart.Viewport); fmpg.Marker = ftm; this.chart.Children.Add(fmpg); listgraph.Add(chart.AddLineGraph(datalist["屏幕变化率"], Colors.Blue, 2, "屏幕变化率"));//Color.FromRgb(72, 118, 255) ts = new ThreadStart(getScreenDiff); if (getDiffThread == null) { if (!runable) { return; } getDiffThread = new Thread(ts); getDiffThread.SetApartmentState(ApartmentState.STA); getDiffThread.Start(); } else { getDiffThread.Abort(); if (!proc.HasExited) { proc.Kill(); } getDiffThread = new Thread(ts); getDiffThread.SetApartmentState(ApartmentState.STA); getDiffThread.Start(); } }
private void UpdatePeakFwhm() { for (var childIndex = FWHM.Children.Count - 1; childIndex > 0; childIndex--) { if (FWHM.Children[childIndex] is LineGraph || FWHM.Children[childIndex] is MarkerPointsGraph) { FWHM.Children.RemoveAt(childIndex); } } for (var peakIndex = 0; peakIndex < ViewModel.NumberOfDetectedPeaks; peakIndex++) { var peakId = peakIndex; var peak = peaks.Get(peakId); if (peak == null) { continue; } var points = peak.Keys.Select(voltage => new Point(voltage, peak[voltage].Beta)).ToList(); var data = new ObservableDataSource <Point>(points); var peakData = new MarkerPointsGraph(data) { Marker = new CirclePointMarker { Pen = new Pen(new SolidColorBrush(peakColors[peakId]), 4), Fill = new SolidColorBrush(peakColors[peakId]) }, Description = new StandardDescription($"peak {peakId} FWHM") }; FWHM.Children.Add(peakData); } }