在图表winform中更改颜色的问题

Problems with changing colors in chart winform

我有一个勾选复选框的列表。列表中的所有项目都在图表上画成一条线。当我取消选中一个项目时,这个项目必须被画成一条灰线。这种情况也会发生,但列表中的 NeXT 项目会在项目变灰之前获得该项目的颜色。真的想不通为什么。它是图表中的东西吗?这是我的代码。

private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
{
  if (readyForChangingColor)
  {
     foreach (Series series in chart1.Series)
     {
        if (series.LegendText == e.Item.Text)
        {
           // if unchecked checkbox. Make the line gray
           if (!e.Item.Checked)
           {
              series.Color = System.Drawing.Color.LightGray;
           }
        }
     }
  }
}

//Adding a serie to chart

var NewDataSeries = new System.Windows.Forms.DataVisualization.Charting.Series
{
                Name = "SomeLogData" + Convert.ToString(NumberOfSets),
                IsVisibleInLegend = true,
                IsXValueIndexed = false,
                ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line,
};
// Add the new series to the chart.
this.chart1.Series.Add(NewDataSeries);

颜色根据调色板自动分配,除非已明确设置颜色。所以下一个系列会得到释放的颜色。

为避免这种情况,您需要明确设置所有系列的颜色。

http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.series.palette(v=vs.110).aspx

您可能希望它设置 DataPointColor,而不是整个 Series

为此,您只需设置它:

   yourDataPoint.Color = Color.Gray;

请注意,这将设置点的颜色和(如果适用)从 上一个 点到它的线。所以第一个点的颜色不会在线段显示..

两种颜色的示例:

Series S = chart1.Series[0];
S.ChartType = SeriesChartType.Line;
S.Color = Color.Fuchsia;
S.Points.AddXY(1, 10);    S.Points.AddXY(2, 20);
S.Points.AddXY(3, 60);    S.Points.AddXY(4, 10);
DataPoint yourDataPoint = S.Points[2];
yourDataPoint.Color = Color.Gray;