Ejemplo n.º 1
0
        private void contructSingleLineSeries(Style _series_style)
        {
            OxyPlot.Wpf.LineSeries _series = null;
            _series = new OxyPlot.Wpf.LineSeries();
            LineSeries _seriesModel = (LineSeries)_series.CreateModel();

            _seriesModel.Points.AddRange(LineSeries);
            OxyPlotView.Series.Add(_series);
            // Style DependencyProperty has to be defined always after adding the series to the view
            if (_series_style != null)
            {
                _series.SetCurrentValue(StyleProperty, _series_style);
            }
            AbsoluteMinimumX = LineSeries.Min(element => element.X);
            AbsoluteMaximumX = LineSeries.Max(element => element.X);
            AbsoluteMinimumY = LineSeries.Min(element => element.Y);
            AbsoluteMaximumY = LineSeries.Max(element => element.Y);
        }
Ejemplo n.º 2
0
        private void contructMultipleLineSeries(Style _series_style)
        {
            constructMultiSetAxes();

            bool initExtremes = true;

            // For each line series in the ViewModel
            foreach (MultifunctionalChartLineData line in ChartData.LinesData)
            {
                OxyPlot.Wpf.LineSeries _wpf_series = new OxyPlot.Wpf.LineSeries();
                LineSeries             _series     = (LineSeries)_wpf_series.CreateModel();

                foreach (ChartPoint cp in line.LinePoints)
                {
                    if (cp.X == null || cp.Y == null)
                    {
                        _series.Points.Add(DataPoint.Undefined);
                    }
                    else
                    {
                        DataPoint dp = new DataPoint();
                        for (int k = 0; k < OxyPlotView.Axes.Count; k++)
                        {
                            Axis _axisModel = (Axis)Activator.CreateInstance((OxyPlotView.Axes[k].CreateModel()).GetType());
                            System.Reflection.MethodInfo mi = _axisModel.GetType().GetMethod("ToDouble");
                            switch (MultifunctionalChartData.AxesPositions[k])
                            {
                            case AxisPosition.Left:
                                dp.Y = Convert.ToDouble(mi == null ? cp.Y : mi.Invoke(_axisModel, new object[] { cp.Y }));
                                break;

                            case AxisPosition.Bottom:
                                dp.X = Convert.ToDouble(mi == null ? cp.X : mi.Invoke(_axisModel, new object[] { cp.X }));
                                break;

                            default:
                                DllEntryPoint.LogMessage(Xvue.MSOT.Services.Log.EnumLogType.Info, "Warning", $"{Name}.contructMultipleLineSeries: Axis # {(k + 1)}: Unhandled AxisPosition: {Convert.ToString(MultifunctionalChartData.AxesPositions[k])}");
                                break;
                            }
                        }
                        _series.Points.Add(dp);
                        if (initExtremes)
                        {
                            if (ChartData.MinimumX == null)
                            {
                                AbsoluteMinimumX = dp.X;
                            }
                            if (ChartData.MaximumX == null)
                            {
                                AbsoluteMaximumX = dp.X;
                            }
                            if (ChartData.MinimumY == null)
                            {
                                AbsoluteMinimumY = dp.Y;
                            }
                            if (ChartData.MaximumY == null)
                            {
                                AbsoluteMaximumY = dp.Y;
                            }

                            /* Currently not implemented
                             * AbsoluteMinimumZ = dp.Z;
                             * AbsoluteMaximumZ = dp.Z;
                             */
                            initExtremes = false;
                        }
                        else
                        {
                            if (dp.X < AbsoluteMinimumX)
                            {
                                AbsoluteMinimumX = dp.X;
                            }
                            if (dp.X > AbsoluteMaximumX)
                            {
                                AbsoluteMaximumX = dp.X;
                            }
                            if (dp.Y < AbsoluteMinimumY)
                            {
                                AbsoluteMinimumY = dp.Y;
                            }
                            if (dp.Y > AbsoluteMaximumY)
                            {
                                AbsoluteMaximumY = dp.Y;
                            }

                            /* Currently not implemented
                             * if (_Z < AbsoluteMinimumZ) { AbsoluteMinimumY = _Z; }
                             * if (_Z > AbsoluteMaximumZ) { AbsoluteMaximumY = _Z; }
                             */
                        }
                    }
                }
                OxyPlotView.Series.Add(_wpf_series);
                // Style DependencyProperty has to be defined always after adding the series to the view
                if (_series_style != null)
                {
                    _wpf_series.SetCurrentValue(StyleProperty, _series_style);
                }
                _wpf_series.SetCurrentValue(OxyPlot.Wpf.LineSeries.MarkerStrokeProperty, line.Color);
                _wpf_series.SetCurrentValue(OxyPlot.Wpf.Series.ColorProperty, line.Color);
                _wpf_series.SetCurrentValue(OxyPlot.Wpf.LineSeries.MarkerFillProperty, line.Color);
                _wpf_series.SetCurrentValue(OxyPlot.Wpf.Series.TitleProperty, line.Name);
            }
        }