示例#1
0
        public void Initialize(double samplingFrequency, string title, XAxisScrollMode scrollMode = XAxisScrollMode.None)
        {
            SampleFrequency = samplingFrequency;
            ContainerChart.BeginUpdate();

            ContainerChart.Title.Text = title;
            ContainerChart.ViewXY.SampleDataSeries[0].Clear();
            ContainerChart.ViewXY.SampleDataSeries[0].SamplingFrequency = 1;
            ContainerChart.ViewXY.ZoomPanOptions.MouseWheelZooming      = MouseWheelZooming.Off;
            ContainerChart.ViewXY.ZoomPanOptions.LeftMouseButtonAction  = MouseButtonAction.None;
            ContainerChart.ViewXY.ZoomPanOptions.RightMouseButtonAction = MouseButtonAction.None;

            _xAxis.Minimum = -SampleFrequency / 2;
            _xAxis.Maximum = SampleFrequency / 2;

            _xAxis.ScrollMode     = scrollMode;
            _xAxis.ScrollPosition = _xAxis.Minimum;
            _xAxis.Position       = _xAxis.Minimum;
            _xAxis.Title.Text     = string.Format("{0} s", SampleFrequency.ToString("0.000"));

            ContainerChart.ViewXY.SampleDataSeries[0].FirstSampleTimeStamp = _xAxis.Minimum;
            ContainerChart.ViewXY.DropOldSeriesData = true;

            var samples = new double[(int)SampleFrequency];

            FeedData(samples);

            ContainerChart.EndUpdate();
        }
示例#2
0
        public void FeedData(double[] samples)
        {
            if (samples == null)
            {
                return;
            }

            ContainerChart.BeginUpdate();

            var half = SampleFrequency / 2;
            var skip = half - half * _zoomFactor;
            var take = SampleFrequency * _zoomFactor;

            var selected = samples.Skip((int)skip).Take((int)take).ToArray();

            ContainerChart.ViewXY.SampleDataSeries[0].SamplesDouble = selected;
            ContainerChart.EndUpdate();
        }
示例#3
0
        internal void Zoom(double factor)
        {
            if (_zoomFactor == 1.0 && factor > 1.0)
            {
                return;
            }
            if (_zoomFactor == 0.0625 && factor < 1.0)
            {
                return;
            }

            _zoomFactor *= factor;
            ContainerChart.BeginUpdate();

            _xAxis.SetRange(_xAxis.Minimum * factor, _xAxis.Maximum * factor);
            _xAxis.ScrollPosition = _xAxis.Minimum;
            _xAxis.Position       = _xAxis.Minimum;

            //var defaultMin = -SampleFrequency/2;
            ContainerChart.ViewXY.SampleDataSeries[0].FirstSampleTimeStamp = _xAxis.Minimum;
            ContainerChart.EndUpdate();
        }
示例#4
0
 public void Stop()
 {
     ContainerChart.BeginUpdate();
     ContainerChart.EndUpdate();
 }