图表图形中的系列颜色在哪个时间点初始化

At which point in time is the series colour initialised in a chart graph

我用Chart画了一个有2条线的图。现在我的目标是将第二个Y轴的MajorGridLineColor设置为对应线条的颜色。这是我的代码:

public partial class Form1 : Form
{

    List<double> values_1 = new List<double>();
    List<double> values_2 = new List<double>();

    public Form1()
    {
        InitializeComponent();

        make_values();

        for (int i = 0; i < values_1.Count; i++)
        {
            chart1.Series[0].Points.AddY(values_1[i]);
        }

        for (int i = 0; i < values_2.Count; i++)
        {
            chart1.Series[1].Points.AddY(values_2[i]);
        }

        // set the colour of grid to corresponding line
        chart1.ChartAreas[0].AxisY2.MajorGrid.LineColor = chart1.Series[1].Color;

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    public void make_values()
    {
        for (int i = 0; i < 600; i++)
        {
            values_1.Add(Math.Sin(i / 60.0));
            values_2.Add(Math.Cos(i / 60.0));
        }

    }
}

由于 2 个不同系列的颜色是自动选择的,所以我可以直接抓住颜色。但是在调试时我看到颜色是 (0,0,0):

所以网格颜色没有改变。但是第二个系列的颜色不是(0,0,0),正如加载window时所见!:

如果我强制手动设置之前2系列的颜色。一切正常,网格得到相应的颜色。

有谁知道我必须在哪个时间点抓取系列的颜色才能获得真正的价值?

要访问系列颜色,您需要调用 ApplyPaletteColors。当您想将它们用于其他元素或自定义绘图时,这是必需的。您还应该在更改 palette..

后再次调用它
chart1.ApplyPaletteColors();

MSDN:

Remarks

When the Chart colors are automatically assigned at run time, there is no way to know what the colors will be prior to the time when the chart rendered; the Color property of an automatically assigned value will return Empty at this time.

If you call the ApplyPaletteColors method, the colors for the series and the data points will be set, which allows for programmatic access.