使用Microsoft .NET图表控件库生成图像,无需控制

是否可以使用Microsoft Chart Controls库生成图像(jpeg,png等)而无需实例化WinForm或ASP.NET Control类? 我见过的所有例子都使用了控制组件。 我需要创建一个包含简单方法的库,这些方法可以绘制数据并返回一个新的图表图像。 例子:

public byte[] GeneratePlot(IList series) { // generate and return JPEG } public void GeneratePlot(IList series, Stream outputStream) { // generate JPEG and write to stream } 

如果不可能:

  1. 你会建议每次用户调用GeneratePlot()方法时创建/处理新的图表控件吗?
  2. 你会推荐另一个.NET库(最好是免费的)吗?

谢谢

是的,这是可能的:

 using System.Windows.Forms.DataVisualization.Charting; using System.IO; ... public void GeneratePlot(IList series, Stream outputStream) { using (var ch = new Chart()) { ch.ChartAreas.Add(new ChartArea()); var s = new Series(); foreach (var pnt in series) s.Points.Add(pnt); ch.Series.Add(s); ch.SaveImage(outputStream, ChartImageFormat.Jpeg); } } 

如果你想要的只是图表图像。 然后,您可以使用图表控件保存到磁盘。

 myChart.SaveImage("C:\mypic.png", System.Drawing.Imaging.ImageFormat.Png) 

然后从磁盘加载该映像。 如果图表仅生成一次,那么您也可以先检查文件系统中的图像,然后仅在不存在的情况下重新呈现它。

希望这可以帮助。