.NET图表 - 系列模板

时间:2011-05-17 13:29:01

标签: c# .net vb.net charts

使命:将通用模板应用于图表系列。

我的模板文件:

<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");
        }
    }

这就是它的样子(糟糕,我知道......这只是说明性的):

chart

请注意,条形图没有样式,而图表似乎风格很好。

有关内置.NET图表的文档非常薄。任何人都可以帮助我使用我的通用模板吗?里面有一个很大的绿色复选标记!

我可能错过了一些明显的东西。谢谢!

1 个答案:

答案 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");
    }
}