1

この投稿のコントローラーから画像を生成するという回答を使用して、以下に示すようにチャート画像を返すコントローラー アクションを作成しました (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");
        }
    }

問題は、コントローラーが返す画像が空白であることです (ただし、画像は返されます)。

私が省略した単純なものを望んでいます!任意の入力をいただければ幸いです、ありがとう。

4

2 に答える 2

4

お役に立てれば.....

私は同じ問題を抱えていました:

それはすべて色に関係しています。このブログの別の例を使用した後、いくつかのコードを追加し、そこから問題を推測しました-みんなに「ありがとう」....

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

また、コントローラーに次のものがあることを確認する必要があります。

System.Drawing を使用します。System.Web.UI.WebControls を使用します。

みんなで乾杯...

JK。

于 2010-04-28T20:21:25.337 に答える
0

こんにちは、私は同じ問題を抱えていました。それは、作成した別の時間に画像を保存していたためです。レンダリング時に内部状態が失われます。画像を保存する前に、グラフの生成を再度テストします。私の英語でごめんなさい。

于 2013-06-06T13:52:04.173 に答える