UIElement[] IView2DRenderer.Generate() { int nser = _dataInfo.nser; int npts = _dataInfo.npts; if ((nser == 0) || (npts == 0)) { return(null); } IPlotElement element = null; if (base.Symbol is PlotElement) { element = ((PlotElement)base.Symbol).Clone() as IPlotElement; } List <UIElement> objects = new List <UIElement>(); for (int i = 0; i < nser; i++) { DataSeries ds = (DataSeries)base.Series[i]; ds.Children.Clear(); objects.Add(ds); if (ds.SymbolShape == null) { ds.SymbolShape = base.StyleGen.Next(); } ShapeStyle symbolShape = ds.SymbolShape; double[,] values = ds.GetValues(); if (values != null) { int length = values.GetLength(1); int num5 = values.GetLength(0); RenderContext rc = new RenderContext(this, ds, length) { Bounds = CoordConverter.ViewBounds }; for (int j = 0; j < length; j++) { if (base.ColorScheme == ColorScheme.Point) { symbolShape = base.StyleGen.GetStyle(j); } double y = values[0, j]; double x = (num5 >= 2) ? values[1, j] : ((double)j); bool flag = false; Style style = base.GetStyle(ds, i, j); IPlotElement pe = base.CreateElement(ds.Symbol, style); if (pe == null) { pe = PlotElement.SymbolFromMarker(ds.SymbolMarker); if ((pe != null) && (style != null)) { pe.Style = style; } } if ((pe == null) && ds.ChartType.HasValue) { ChartSubtype subtype = ChartTypes.GetSubtype(ds.ChartType.ToString()); if (subtype != null) { pe = base.CreateElement(subtype.Symbol, style); } } else if (((pe == null) && ds.IsDefaultSymbol) && (element != null)) { pe = element; pe.Style = style; element = ((PlotElement)base.Symbol).Clone() as IPlotElement; } if ((pe == null) && ((ds.PointLabelTemplate != null) || (ds.PointTooltipTemplate != null))) { DotSymbol symbol = new DotSymbol(); symbol.Fill = TransparentBrush; symbol.Size = new Size(5.0, 5.0); symbol.Stroke = TransparentBrush; pe = symbol; flag = true; } Point point = CoordConverter.ConvertPoint(new Point(x, y)); Axis auxAxis = GetAuxAxis(j); if (auxAxis != null) { ChartViewport2D coordConverter = CoordConverter as ChartViewport2D; if (coordConverter != null) { point = coordConverter.ConvertPoint(new Point(x, y), base.Chart.View.AxisX, auxAxis); } } rc.SetPoint(j, point.X, point.Y); if (!double.IsNaN(point.X) && !double.IsNaN(point.Y)) { DataPoint dp = ds.CreateDataPoint(i, j); UIElement element3 = base.RenderElement(objects, pe, ds, rc, symbolShape, dp); if ((element3 != null) && flag) { Canvas.SetZIndex(element3, 2); } } } PlotElement element4 = base.RenderConnection(ds, rc, i); if (element4 != null) { element4.DataPoint = ds.CreateDataPoint(i, -1); ds.Children.Insert(0, element4); } } } return(objects.ToArray()); }