public System.Drawing.Image RenderChart(Rdl.Runtime.Context context, int width, int height, decimal xMult, decimal yMult) { if (width <= 0 || height <= 0) { return(null); } Bitmap bm = new Bitmap(width, height); Graphics g = Graphics.FromImage(bm); g.PageUnit = GraphicsUnit.Pixel; int t = 0; int l = 0; int w = width; int h = height; if (context.Rows.Count == 0) { g.FillRectangle(new SolidBrush(Style.W32Color(Style.BackgroundColor(context))), new System.Drawing.Rectangle(0, 0, w, h)); g.DrawString("No Data", Style.GetWindowsFont(context), new SolidBrush(Style.W32Color(Style.Color(context))), new Point(0, 0)); return(bm); } System.Drawing.Rectangle clipRect = new System.Drawing.Rectangle(l, t, w, h); if (Style.BackgroundColor(context) != null) { g.FillRectangle(new SolidBrush(Style.W32Color(Style.BackgroundColor(context))), clipRect); } if (Style.BorderWidth != null) { Rdl.Render.Drawing.DrawBorder(g, new System.Drawing.Rectangle(l, t, w, h), new Rdl.Render.BorderWidth(Style.BorderWidth, context), new Rdl.Render.BorderStyle(Style.BorderStyle, context), new Rdl.Render.BorderColor(Style.BorderColor, context), xMult, yMult); } if (Style != null) { l += (int)(Style.PaddingLeft(context).points *xMult); t += (int)(Style.PaddingTop(context).points *yMult); w -= (int)((Style.PaddingLeft(context).points + Style.PaddingRight(context).points) * xMult); h -= (int)((Style.PaddingTop(context).points + Style.PaddingBottom(context).points) * yMult); } // Draw in the title. if (_title != null) { _title.DrawAtTop(g, context, ref l, ref t, ref w, ref h); } // Get the categories. if (_categoryGrouping != null) { _categories = _categoryGrouping.GetCategories(context, null); _leafCategories = _categories.LeafCategories; } // Get the series if (_seriesGrouping != null) { _seriesList = _seriesGrouping.GetSeriesList(context, null); _leafSeriesList = _seriesList.LeafSeriesList; } // Draw in the Legend DrawLegend(context, g, bm, ref l, ref t, ref w, ref h, (_type == TypeEnum.Pie), xMult, yMult); // Draw the chart. switch (_type) { case TypeEnum.Area: break; case TypeEnum.Bar: Type.Bar barChart = new Type.Bar(this, context, g, l, t, w, h); break; case TypeEnum.Bubble: break; case TypeEnum.Column: Type.Column columnChart = new Type.Column(this, context, g, l, t, w, h); break; case TypeEnum.Doughnut: break; case TypeEnum.Line: Type.Line lineChart = new Type.Line(this, context, g, l, t, w, h); break; case TypeEnum.Pie: break; case TypeEnum.Scatter: break; case TypeEnum.Stock: break; } return(bm); }