首页 > 解决方案 > 控制器类中的堆积柱形图 C#

问题描述

所以,我的问题是这个。我必须将堆积柱形图插入网络应用程序。它不会被交互,它只需要偶尔显示和刷新。

最基本的,这是我在控制器类中用于生成简单条形图的代码。

public ActionResult CharterHelp(int _completed, int _remaining)
{
    var workChart = new System.Web.Helpers.Chart(300, 500).AddTitle("Work Items");
    workChart .AddSeries(chartType: "column",
               xValue: new[] { "Completed", "Remaining" },
               yValues: new[] { _completed, _remaining })
               .Write("png");

    return null;
}

这个先前的代码正在工作。但是,我需要将它呈现为一个堆叠的列,并且......一直发现很难获得一个明确的答案或教程,说明如何制作一个基本的,而不是用于专有图表软件。

我为简单的 C# 和 ASP.net 找到的所有内容都对我有所帮助,但我还没有找到一个可以为我提供与“.write(png)”等效的代码的内容。

我知道我需要使用 SaveImage 方法,但这在我不能将文件存储在静态位置的服务器上用完。我需要即时创建它。

就我对修改后的代码而言,这大约是我所获得的,并且希望能在这个主题上提供任何帮助。

public ActionResult CharterHelp(int _completed, int _remaining)
{
    System.Web.UI.DataVisualization.Charting.Chart workChart = new System.Web.UI.DataVisualization.Charting.Chart();

    var seriesCompleted = new System.Web.UI.DataVisualization.Charting.Series
    {
            Name = "Completed",
            Color = System.Drawing.Color.Green,
            IsVisibleInLegend = false,
            IsXValueIndexed = true,
            ChartType = SeriesChartType.StackedColumn
    };
    var seriesRemaining = new System.Web.UI.DataVisualization.Charting.Series
    {
            Name = "Remaining",
            Color = System.Drawing.Color.Red,
            IsVisibleInLegend = false,
            IsXValueIndexed = true,
            ChartType = SeriesChartType.StackedColumn
    };

    workChart.Series.Add(seriesCompleted);
    workChart.Series.Add(seriesRemaining);

    seriesRemaining.Points.AddY(_completed);
    seriesCompleted.Points.AddY(_remaining);

    var chartArea1 = new System.Web.UI.DataVisualization.Charting.ChartArea
    {
            Name = "ChartArea1"
    };

    workChart.ChartAreas.Add(chartArea1);
    workChart.Width = 300;
    workChart.Height = 500;

    System.IO.MemoryStream imageStream = new System.IO.MemoryStream();
    workChart.SaveImage(imageStream, ChartImageFormat.Png);
    return null;
}

标签: c#asp.netchartsstacked-chart

解决方案


经过大量的试验、错误和搜索,我找到了答案……我从来没有找到一个简单的例子来说明我需要做什么,但我能够从我找到的部分拼凑出一个解决方案。

为了做我想做的事,我需要在控制器类的 actionresult 方法的末尾添加以下代码:

        System.IO.MemoryStream chartStream = new System.IO.MemoryStream();
        workChart.SaveImage(chartStream, ChartImageFormat.Png);
        return File(chartStream.ToArray(), ("chart/png"));

推荐阅读