c# - microsoft - live charts
Generar imagen con Microsoft.NET Chart Controls Library sin control (2)
¿Es posible generar imágenes (jpeg, png, etc.) utilizando la biblioteca de controles de gráficos de Microsoft sin crear instancias de una clase de control de WinForm o ASP.NET? Todos los ejemplos que he visto utilizan un componente de control. Necesito crear una biblioteca que contenga métodos simples que tomen los datos para ser graficados y devuelvan una nueva imagen de gráfico. Ejemplos:
public byte[] GeneratePlot(IList<SeriesData> series)
{
// generate and return JPEG
}
public void GeneratePlot(IList<SeriesData> series, Stream outputStream)
{
// generate JPEG and write to stream
}
Si no es posible:
- ¿recomendaría crear / eliminar un nuevo control de gráfico cada vez que el usuario llame al método GeneratePlot ()?
- ¿Hay otra biblioteca de .NET (preferiblemente gratuita) que recomendarías?
Gracias
Sí, eso es posible:
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);
}
}
Si todo lo que quieres es imágenes de gráficos. A continuación, puede utilizar los controles de gráfico para guardar en el disco.
myChart.SaveImage("C:/mypic.png", System.Drawing.Imaging.ImageFormat.Png)
Luego carga esa imagen desde el disco. Si los gráficos solo se generan una vez, también puede verificar primero el sistema de archivos para la imagen y luego volver a renderizarlo si no existe.
Espero que esto ayude.