Сначала напишите метод для преобразования ваших диаграмм в изображения:
List<Image> ChartsToImages(List<Chart> charts)
{
var imageList = new List<Image>();
foreach (var c in charts)
{
using (var ms = new MemoryStream())
{
c.SaveImage(ms, ChartImageFormat.Png);
var bmp = System.Drawing.Bitmap.FromStream(ms);
imageList.Add(bmp);
}
}
return imageList;
}
, затем метод для сшивания всех ваших изображений:
private static Image MergeImages(List<Image> imageList)
{
var finalSize = new Size();
foreach (var image in imageList)
{
if (image.Width > finalSize.Width)
{
finalSize.Width = image.Width;
}
finalSize.Height += image.Height;
}
var outputImage = new Bitmap(finalSize.Width, finalSize.Height);
using (var gfx = Graphics.FromImage(outputImage))
{
var y = 0;
foreach (var image in imageList)
{
gfx.DrawImage(image, 0, y);
y += image.Height;
}
}
return outputImage;
}
Наконец, соберите все вместе:
var chartList = new List<Chart> {tabPageChart1, tabPageChart2, tabPageChart3};
var imageList = ChartsToImages(chartList);
var finalImage = MergeImages(imageList);
finalImage.Save("C:\\Junk\\Junk.png", ImageFormat.Png);