我的模板文件:
<Chart BackColor="211, 223, 240" Width="250" Height="100" BackGradientStyle="TopBottom" BackSecondaryColor="Blue" BorderColor="26, 59, 105" BorderWidth="2">
<Series>
<series _Template_="All" Color="Black" BorderColor="180, 26, 59, 105">
</series>
</Series>
</Chart>
应用于“图表”的样式工作正常。但是,没有应用于系列模板的任何工作;它只包含默认样式。
我的返回图表图片的功能:
private FileContentResult ImageCall(string config)
{
System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart();
if (config.Length > 0)
{
chart.Serializer.IsTemplateMode = true;
chart.Serializer.IsResetWhenLoading = false;
chart.Serializer.SerializableContent = "*.*";
chart.Serializer.Load(config);
}
Series s2 = new Series("Series1");
s2.ChartArea = "Area1";
s2.ChartType = SeriesChartType.Column;
s2.Points.Add(new DataPoint
{
AxisLabel = "Value1",
YValues = new double[] { 1 }
});
s2.Points.Add(new DataPoint
{
AxisLabel = "Value2",
YValues = new double[] { 2 }
});
chart.Series.Add(s2);
ChartArea ca1 = new ChartArea("Area1");
chart.ChartAreas.Add(ca1);
using (var ms = new MemoryStream())
{
chart.SaveImage(ms, ChartImageFormat.Png);
ms.Seek(0, SeekOrigin.Begin);
return File(ms.ToArray(), "image/png", "mychart.png");
}
}
这就是它的样子(糟糕,我知道......这只是说明性的):
请注意,条形图没有样式,而图表似乎风格很好。
有关内置.NET图表的文档非常薄。任何人都可以帮助我使用我的通用模板吗?里面有一个很大的绿色复选标记!
我可能错过了一些明显的东西。谢谢!
答案 0 :(得分:2)
的叹息强> 的
所以修复,就像我想的那样,很简单。让世界知道模板只能在图表添加到图表后应用于图表上的对象。你不能预先设置样式然后添加系列,你需要添加系列然后设置样式。
这是更新后的代码:
private FileContentResult ImageCall(string config)
{
System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart();
Series s2 = new Series("Series1");
s2.ChartArea = "Area1";
s2.ChartType = SeriesChartType.Column;
s2.Points.Add(new DataPoint
{
AxisLabel = "Value1",
YValues = new double[] { 1 }
});
s2.Points.Add(new DataPoint
{
AxisLabel = "Value2",
YValues = new double[] { 2 }
});
chart.Series.Add(s2);
ChartArea ca1 = new ChartArea("Area1");
chart.ChartAreas.Add(ca1);
//REPOSITIONED
if (config.Length > 0)
{
chart.Serializer.IsTemplateMode = true;
chart.Serializer.IsResetWhenLoading = false;
chart.Serializer.SerializableContent = "*.*";
chart.Serializer.Load(config);
}
using (var ms = new MemoryStream())
{
chart.SaveImage(ms, ChartImageFormat.Png);
ms.Seek(0, SeekOrigin.Begin);
return File(ms.ToArray(), "image/png", "mychart.png");
}
}