private Image CreateChartsImage(bool filled = false) { int dy = 10; int dx = 10; int w = 500; int h = 200; int mw = w + 2 * dx; int mh = h * charts.Count + dy * (charts.Count + 1); Bitmap bmp = new Bitmap(mw, mh); if (filled) { Dictionary <Chart, RectangleF> dicArea = new Dictionary <Chart, RectangleF>(); Dictionary <Chart, Bitmap> dic = man.SaveImageOfChart(new Size(w, h), dicArea); Brush br = new SolidBrush(Color.FromArgb(32, Color.Green)); int y = dy; int x = dx; int cnt = 0; using (Graphics gr = Graphics.FromImage(bmp)) { foreach (Chart chart in dic.Keys) { Bitmap bmpChart = dic[chart]; RectangleF rc = dicArea[chart]; rc.Offset(dx, dy + cnt * (h + dy)); gr.DrawImage(bmpChart, x, y); gr.FillRectangle(br, rc.X, rc.Y, rc.Width, rc.Height); y += h; y += dy; cnt++; } } br.Dispose(); } else { Dictionary <Chart, Bitmap> dic = man.SaveImageOfChart(new Size(w, h)); int y = dy; int x = dx; using (Graphics gr = Graphics.FromImage(bmp)) { foreach (Bitmap bmpChart in dic.Values) { gr.DrawImage(bmpChart, x, y); y += h; y += dy; } } } return(bmp); }