WinFormまたはASP.NETControlクラスをインスタンス化せずに、Microsoft Chart Controlsライブラリを使用して画像(jpeg、pngなど)を生成することは可能ですか?私が見たすべての例は、制御コンポーネントを利用しています。プロットするデータを取得して新しいグラフ画像を返す簡単なメソッドを含むライブラリを作成する必要があります。例:
public byte[] GeneratePlot(IList<SeriesData> series)
{
// generate and return JPEG
}
public void GeneratePlot(IList<SeriesData> series, Stream outputStream)
{
// generate JPEG and write to stream
}
それが不可能な場合:
ありがとう
はい、それは可能です:
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);
}
}
必要なのはチャート画像だけです。次に、チャートコントロールを使用してディスクに保存できます。
myChart.SaveImage("C:\mypic.png", System.Drawing.Imaging.ImageFormat.Png)
次に、そのイメージをディスクからロードします。チャートが1回だけ生成される場合は、最初にファイルシステムで画像を確認してから、画像が存在しない場合にのみ再レンダリングすることもできます。
お役に立てれば。