//---- // обрезаем данные по Х с перемасшбированием по 2-м осям private void TrimmingData_X(CollectionGraphicElementsChart _chartElements, InitialDataChartList _initialDataChartList, ScaleValue _scaleValue, ref double _countElement) { if (_countElement > SettingsCharts.maxCountValueCharts.Count) { dispatcher.Invoke(() => { for (int i = 0; i < SettingsCharts.countDelete.Count; i++) { _chartElements.RemoveAt(0); } }); _initialDataChartList.RemoveRange(0, SettingsCharts.countDelete.Count); _countElement = _chartElements.Count; double countElem = _countElement; dispatcher.Invoke(() => { for (int i = 0; i < countElem; i++) { Canvas.SetLeft(_chartElements[i], X_Set(i, _scaleValue.X_scale)); } }, DispatcherPriority.Background); } }
//---------------------------------------------------------- // обрезаем данные по Х с перемасшбированием по 2-м осям private void TrimmingData_X(CollectionGraphicElementsChart _chartElements, InitialDataChartList _initialDataChartList, Size _sizeChart, Action <Rectangle, double> _setBottomAction, ref ScaleValue _scaleValue, ref ExtremumValue _extremumValue, ref double _countElement) { if (_countElement > SettingsCharts.maxCountValueCharts.Count) { dispatcher.Invoke(() => { for (int i = 0; i < SettingsCharts.countDelete.Count; i++) { _chartElements.RemoveAt(0); } }); _initialDataChartList.RemoveRange(0, SettingsCharts.countDelete.Count); _countElement = _chartElements.Count; //_extremumValue.Min = _initialDataChartList.Min(x => x.Value); //_extremumValue.Max = _initialDataChartList.Max(x => x.Value); _extremumValue = new ExtremumValue(_initialDataChartList.Min(x => x.Value), _initialDataChartList.Max(x => x.Value)); _scaleValue.Y_scale = Y_ScaleValueCalc(_extremumValue, _sizeChart); double countElem = _countElement; double y_scl = _scaleValue.Y_scale; double minVal = _extremumValue.Min; ScaleValue scalval = _scaleValue; dispatcher.Invoke(() => { for (int i = 0; i < countElem; i++) { _setBottomAction(_chartElements[i], Y_Set(_initialDataChartList[i], minVal, y_scl)); Canvas.SetLeft(_chartElements[i], X_Set(i, scalval.X_scale)); } }, DispatcherPriority.Background); } }
//------- // автомасштабирование по оси У private void ScaleChart_Y(ChangeMinMax _changeMinMax, double _countValueChart, CollectionGraphicElementsChart _collectionGraphicElementsChart, InitialDataChartList _initialDataChartList, ExtremumValue _extremumValue, ScaleValue _scaleValue, Action <Rectangle, InitialValue, double, double> _scaleYTypeAction) { if (_changeMinMax.ChangeMin | _changeMinMax.ChangeMax) { dispatcher.Invoke(() => { for (int i = 0; i < _countValueChart; i++) { _scaleYTypeAction(_collectionGraphicElementsChart[i], _initialDataChartList[i], _extremumValue.Min, _scaleValue.Y_scale); } }); } }
// Инициализатор коллекций private void InitializationCollection() { initialDataList = new InitialDataChartList(); ElementsChart = new CollectionGraphicElementsChart(); }