2015-10-19 106 views
0

我创建的图表动态,但我想保存在图片列表或任何其他类型的列表创建的图表,只要不在文件夹中。保存图表创建图像列表

问题:如何保存图像列表/其他类型的列表创建的图表?

这是我的代码:

     Chart Chart1 = new Chart(); 
         Chart1.DataSource = dt; 
         Chart1.Width = 800; 
         Chart1.Height = 500; 

         Chart1.Series.Add(new Series()); 
         Chart1.Series[0].ChartType = SeriesChartType.BoxPlot; 

         List<object> List_CHART = dt.AsEnumerable().ToList<object>(); 

         foreach (DataRow row in dt.Rows) 
         { 
          Chart1.Series[0].Points.AddXY(row["TITLE"], new object[] { row["MIN"], row["MAX"], row["25TH_PERCENTILE"], row["75TH_PERCENTILE"], row["50TH_PERCENTILE"], row["AVG"] }); 
         } 

         //create chartareas 
         ChartArea ca= new ChartArea(); 
         ca.AxisX = new Axis(); 
         ca.AxisY = new Axis(); 
         Chart1.ChartAreas.Add(ca); 

         //databind 
         Chart1.DataBind(); 
         Chart1.Visible = true; 

         panel.Controls.Add(Chart1); 

感谢。

回答

0
  1. 看图表API找到Chart.SaveImage Method
  2. 谷歌“保存图表到流”找到this SO question
  3. 看图像API Image.FromStream Method

最终的解决方案应该是这个样子:

 var chartImages = new ImageList(); 
     var chartStream = new MemoryStream() 
     chart.SaveImage(chartStream, ChartImageFormat.Png); 
     var chartImage = Image.FromStream(chartStream); 
     chartImages.Add(chartImage); 

此外,要注意备注部分的图像类:

你必须保持该图像的生命周期的流。

+0

嗨@DanielS,我需要图表图像而不是图表数据,因为我想在图像列表中存储很多图表图像,然后将它们导出到excel。 –