Is it possible to generate images (jpeg, png, etc) using the Microsoft Chart Controls library without instantiating a WinForm or ASP.NET Control class? All the examples I have seen utilize a control component. I need to create a library which contains simple methods that take data to be plotted and returns a new chart image. Examples:
public byte[] GeneratePlot(IList<SeriesData> series) { // generate and return JPEG } public void GeneratePlot(IList<SeriesData> series, Stream outputStream) { // generate JPEG and write to stream }
If it is not possible:
Thanks
Yes, that's possible:
using System.Windows.Forms.DataVisualization.Charting; using System.IO; ... public void GeneratePlot(IList<DataPoint> 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); } }
If all you want is chart images. Then you can use the chart controls to save to disk.
myChart.SaveImage("C:\mypic.png", System.Drawing.Imaging.ImageFormat.Png)
Then load that image from the disk. If the charts are only generated once then you can also just check the filesystem for the image first and then only re-render it if it doesnt exist.
Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With