如何使用C#在双Y轴ZedGraph图形中添加实时数据?

Hig*_*Wig 3 c# zedgraph real-time

对于我的项目,我需要添加和更新实时数据到我的双y轴图.Y和Y2值共享相同的X值,我已经创建了它.现在我有一个函数可以将新的点对添加到曲线列表中.

这是我的问题:我的Y和Y2值总是被添加到第一条曲线的曲线列表中.如何将Y2值添加到图表中的第二个曲线列表中?

这是我的功能代码:

    private void AddDataToGraph(ZedGraphControl zg1, XDate xValue, double yValue1, double yValue2)
    {
        // Make sure that the curvelist has at least one curve.
        if (zg1.GraphPane.CurveList.Count <= 0)
            return;

        // Get the first CurveItem in the graph.
        LineItem curve = zg1.GraphPane.CurveList[0] as LineItem;

        if (curve == null)
            return;

        // Get the PointPairList.
        IPointListEdit list = curve.Points as IPointListEdit;
        IPointListEdit list2 = curve.Points as IPointListEdit;

        // If this is null, it means the reference at curve.Points does not
        // support IPointListEdit, so we won't be able to modify it.
        if (list == null || list2 == null)
            return;

        // Add new data points to the graph.
        list.Add(xValue, yValue1);
        list2.Add(xValue, yValue2);

        // Force redraw.
        zg1.Invalidate();
    }
Run Code Online (Sandbox Code Playgroud)

如何将Y2值添加到第二曲线列表?

Hig*_*Wig 9

我自己找到了一个可能的解 这是我的代码更改:

private void AddDataToGraph(ZedGraphControl zg1, XDate xValue, double yValue1, double yValue2)
    {
        // Make sure that the curvelist has at least one curve
        if (zg1.GraphPane.CurveList.Count <= 0)
            return;

        // Get the first CurveItem in the graph
        LineItem curve = zg1.GraphPane.CurveList[0] as LineItem;
        LineItem curve2 = zg1.GraphPane.CurveList[1] as LineItem;

        if (curve == null || curve2 == null)
            return;

        // Get the PointPairList
        IPointListEdit list = curve.Points as IPointListEdit;
        IPointListEdit list2 = curve2.Points as IPointListEdit;
        // If this is null, it means the reference at curve.Points does not
        // support IPointListEdit, so we won't be able to modify it
        if (list == null || list2 == null)
            return;

        // add new data points to the graph
        list.Add(xValue, yValue1);
        list2.Add(xValue, yValue2);

        // force redraw
        zg1.Invalidate();
    }
Run Code Online (Sandbox Code Playgroud)

重要的是使用"CurveList [i]"中的索引.所以[0]是带有Y值的曲线,[1]是带有Y2值的曲线,依此类推.

我希望这可以帮助任何有相同或类似问题的人.