using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; namespace RealTimeGraphEx.FastGraphs { /// /// Represents a real-time graph with a single scrollable wave form. /// public class RealTimeGraphExWaveScroll : RealTimeGraphExLineScroll { #region Constructors public RealTimeGraphExWaveScroll() : base() { } #endregion #region Override Methods /// /// Set the cross thread fields. /// protected override void OnSetCrossThreadFields() { base.OnSetCrossThreadFields(); this.Dispatcher.Invoke(() => { _minimum = _maximum * -1; }, System.Windows.Threading.DispatcherPriority.Send); } /// /// Draw the actual polygon on the image. /// /// protected override void OnDrawVisuals(WriteableBitmap bmp) { Color stroke = _graphController.dataSeries.GetStrokeColor() != null ? _graphController.dataSeries.GetStrokeColor().Value : _stroke; Color fill = _graphController.dataSeries.GetFillColor() != null ? _graphController.dataSeries.GetFillColor().Value : _fill; double scale = GetPolygonScaleFactor(); if (_fillGraph) //Fill Graph { bmp.FillPolygon(graphPolygon.ToPolygonPointsWaveFill(_offSetX, _offSetY, _width, _height, scale, ConvertYToImageYFliped), fill); } DrawPolyline(bmp, graphPolygon.ToPolygonPoints(_offSetX, _offSetY, scale, ConvertYToImageYFliped), stroke); DrawPolyline(bmp, graphPolygon.ToPolygonPointsReflection(_offSetX, _offSetY, _height, scale, ConvertYToImageYFliped), stroke); } #endregion } }