Jim*_*mbo 1 asp.net-mvc controller image mschart microsoft-chart-controls
使用这篇文章中的“从控制器生成图像”答案,我创建了一个控制器操作来返回图表图像,如下所示(X 和 Y 值只是作为测试数据):
public FileContentResult HistoryChart()
{
Chart chart = new Chart();
string[] currencies = { "ZAR", "USD", "GBP", "JPY" };
foreach (string currency in currencies)
{
Series series = new Series(currency);
series.ChartType = SeriesChartType.FastLine;
for (int x = 0; x <= 30; x++)
series.Points.AddXY(x, (x * 5));
chart.Series.Add(series);
}
using (MemoryStream ms = new MemoryStream())
{
chart.SaveImage(ms, ChartImageFormat.Png);
ms.Seek(0, SeekOrigin.Begin);
return File(ms.ToArray(), "image/png", "mychart.png");
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,控制器返回的图像是空白的(尽管它确实返回图像)
我希望它是我遗漏的一些简单的东西!任何意见将不胜感激,谢谢。
小智 5
希望这可以帮助.....
我也遇到过同样的问题:
这一切都与颜色有关,在使用此博客中的另一个示例并从中推断出问题后,我向您添加了一些代码 - 所以“谢谢”大家......
public FileContentResult HistoryChart()
{
Chart chart = new Chart();
**chart.BackColor = Color.Transparent;**
string[] currencies = { "ZAR", "USD", "GBP", "JPY" };
foreach (string currency in currencies)
{
Series series = new Series(currency);
series.ChartType = SeriesChartType.FastLine;
for (int x = 0; x <= 30; x++)
series.Points.AddXY(x, (x * 5));
chart.Series.Add(series);
}
**ChartArea ca1 = new ChartArea("ca1");
ca1.BackColor = Color.Cyan;
chart.ChartAreas.Add(ca1);**
using (MemoryStream ms = new MemoryStream())
{
chart.SaveImage(ms, ChartImageFormat.Png);
ms.Seek(0, SeekOrigin.Begin);
return File(ms.ToArray(), "image/png", "mychart.png");
}
}
Run Code Online (Sandbox Code Playgroud)
此外,您还需要确保您的控制器具有:
使用系统绘图;使用 System.Web.UI.WebControls;
为大家干杯...
JK。