/// <summary> /// Sets the position of the slider. /// </summary> /// <param name="dp">The data point.</param> /// <param name="s">The series.</param> public void SetPosition(DataPoint dp, OxyPlot.DataSeries s) { var dp1 = new DataPoint(dp.X, s.YAxis.ActualMaximum); var dp2 = new DataPoint(dp.X, s.YAxis.ActualMinimum); var dp3 = new DataPoint(s.XAxis.ActualMinimum, dp.Y); var dp4 = new DataPoint(s.XAxis.ActualMaximum, dp.Y); var pt0 = AxisBase.Transform(dp, s.XAxis, s.YAxis); var pt1 = AxisBase.Transform(dp1, s.XAxis, s.YAxis); var pt2 = AxisBase.Transform(dp2, s.XAxis, s.YAxis); var pt3 = AxisBase.Transform(dp3, s.XAxis, s.YAxis); var pt4 = AxisBase.Transform(dp4, s.XAxis, s.YAxis); if (ContentTemplate != null) { content.Content = new SliderViewModel(s, dp, SliderLabelFormat); content.ContentTemplate = ContentTemplate; SetLeft(content, pt0.X); SetTop(content, pt0.Y); } sliderLine1.X1 = pt1.X; sliderLine1.Y1 = pt1.Y; sliderLine1.X2 = pt2.X; sliderLine1.Y2 = pt2.Y; sliderLine2.X1 = pt3.X; sliderLine2.Y1 = pt3.Y; sliderLine2.X2 = pt4.X; sliderLine2.Y2 = pt4.Y; Visibility = Visibility.Visible; }
private DataPoint?GetNearestPoint(OxyPlot.DataSeries s, System.Windows.Point pt, bool snap, bool pointsOnly) { if (s == null) { return(null); } var dp = pc.InverseTransform(pt, s.XAxis, s.YAxis); if (snap || pointsOnly) { var dpn = s.GetNearestPoint(dp); if (dpn != null && snap) { var spn = pc.Transform(dpn.Value, s.XAxis, s.YAxis); if (spn.DistanceTo(pt) < 20) { return(dpn); } } } if (!pointsOnly) { return(s.GetNearestPointOnLine(dp)); } return(null); }
public override void OnMouseUp() { base.OnMouseUp(); if (currentSeries == null) { return; } currentSeries = null; pc.HideSlider(); }
/// <summary> /// Initializes a new instance of the <see cref="SliderViewModel"/> class. /// </summary> /// <param name="series">The series.</param> /// <param name="point">The point.</param> /// <param name="fmt">The format string.</param> public SliderViewModel(OxyPlot.DataSeries series, DataPoint point, string fmt = null) { if (String.IsNullOrEmpty(fmt)) { fmt = DefaultFormat; } Format = fmt; Series = series; Point = point; }
public override void OnMouseDown(System.Windows.Point pt, MouseButton button, int clickCount, bool control, bool shift) { base.OnMouseDown(pt, button, clickCount, control, shift); if (button != MouseButton.Left) return; // Middle button double click adds an annotation if (clickCount == 2) { // pc.Annotations. pc.Refresh(); } currentSeries = pc.GetSeriesFromPoint(pt); OnMouseMove(pt, control, shift); //pc.CaptureMouse(); // pc.Cursor = Cursors.Cross; }
public override void OnMouseDown(System.Windows.Point pt, MouseButton button, int clickCount, bool control, bool shift) { base.OnMouseDown(pt, button, clickCount, control, shift); if (button != MouseButton.Left) { return; } // Middle button double click adds an annotation if (clickCount == 2) { // pc.Annotations. pc.Refresh(); } currentSeries = pc.GetSeriesFromPoint(pt); OnMouseMove(pt, control, shift); //pc.CaptureMouse(); // pc.Cursor = Cursors.Cross; }
public override void OnMouseUp() { base.OnMouseUp(); if (currentSeries == null) return; currentSeries = null; pc.HideSlider(); }
public void ShowSlider(OxyPlot.DataSeries s, DataPoint dp) { slider.ContentTemplate = SliderTemplate; slider.SetPosition(dp, s); }