C#。 WPF。图表构建问题

时间:2015-05-20 16:22:43

标签: c# wpf charts

在我的图表构建的WPF应用程序中,我正在尝试使用WinForms System.Windows.Forms.DataVisualization.Charting;

我有以下代码:

private void build()
{
    for(int i = 0; i< boundData.Count; i++)
    {
        var chart = new Chart();
        var ser = new Series();

        ser.Name = "Series1";
        ser.ChartType = SeriesChartType.Bar;
        ser.Color = System.Drawing.Color.Blue;

        chart.Series.Add(ser);
        charts.Add(chart);

        for (int j = 0; j < boundData[i].Count; j++)
        {
            charts[i].Series["Series1"].Points.AddXY(j, boundData[i][j]);
        }
    }
        //Just for tesing Purposes
        charts[1].Invalidate();
        charts[1].SaveImage("met.png", ChartImageFormat.Png);
}

'boundData'具有以下结构

List<List<int>>:
List<int> : [ 1,2,3,4,5,6,... ];
List<int> : [ 1,2,3,4,5,6, ... ];
...

根据debagger,'系列'属性有分数。

我想要做的是建立一个图表并将其保存为图像。保存的图像没什么(空的) 任何人都可以指出我做错了什么或建议另一种建立图表的方法吗?

2 个答案:

答案 0 :(得分:1)

您需要在绘制

之前添加ChartArea
    private void build()
    {
        for (int i = 0; i < boundData.Count; i++)
        {
            var chart = new Chart();
            var ser = new Series();

            chart.ChartAreas.Add(new ChartArea("Area1"));

            ser.ChartArea = "Area1";
            ser.Name = "Series1";
            ser.ChartType = SeriesChartType.Bar;
            ser.Color = System.Drawing.Color.Blue; ;
            chart.Series.Add(ser);
            charts.Add(chart);

            for (int j = 0; j < boundData[i].Count; j++)
            {
                charts[i].Series["Series1"].Points.AddXY(j, boundData[i][j]);
            }
        }
        //Just for tesing Purposes
        charts[1].Invalidate();
        charts[1].SaveImage("met.png", ChartImageFormat.Png);
    }

答案 1 :(得分:0)

当您使用wpf时使用oxyplot而不是Windows窗体。它是一个开源项目。你可以找到它的演示here。它还支持将图表保存为图像。

样品:https://github.com/oxyplot/oxyplot/tree/master/Source/Examples