2016-11-18 54 views
1

我使用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):

enter image description here

所以网格颜色不会改变。但是,第二个系列的颜色不是(0,0,0),其可以在被装载的窗口!:

enter image description here

如果我强迫并手动设置2系列的颜色之前可以看出。一切工作正常,网格获取相应的颜色。

有谁知道在哪个时间点我将不得不抓住系列的颜色来获得真正的价值?

回答

1

要访问系列颜色,您需要拨打ApplyPaletteColors。当您想要将其用于其他元素或自定义绘图时,这是必需的。你还应该再改变palette后把它..

chart1.ApplyPaletteColors(); 

MSDN

备注

当图表颜色在运行时自动分配,有 没有办法知道颜色将在 图表呈现之前的颜色为何;自动分配的值 的颜色属性此时将返回空。

如果您调用ApplyPaletteColors方法,将设置系列 的颜色和数据点,以允许进行编程访问。

+0

辉煌!非常感谢你。我绝对应该多阅读一下备注部分;) –

+0

嗯,问题是这样做的第一个需要找到正确的方法.. – TaW

+0

啊我没有立即跟随链接,我认为这将是在'Chart'类文档。嗯,是的,找到约100的正确方法。但通过你的答案,我将来会考虑不同的属性自动分配。下一次,我会考虑有一种方法可以强制值被初始化。 –