在c#.net中设置饼图中的颜色

时间:2014-09-16 14:38:14

标签: c# pie-chart

我正在尝试使用从C#.NET中的数据库中提取的数据创建一个简单的饼图。我使用了以下代码 -

string[] xAxis = { "Banana", "Mango", "Apple" };    
double BananaPercentage= 40;
double MangoPercentage= 30;
double ApplePercentage = 30;
double[] Percentage = { BananaPercentage, MangoPercentage, ApplePercentage };

Color[] PieColors = { Color.Green, Color.Red, Color.Gray };   

chart1.Series[0].Label = "#PERCENT";
chart1.Series[0].LegendText = "#AXISLABEL";
//chart1.Series[0].Points[0].Color = PieColors[0];
chart1.Series[0].Points.DataBindXY(xAxis, Percentage);

它显示具有正确值的饼图。但是当我尝试为香蕉(绿色),芒果(红色)和苹果(灰色)分配特定颜色时,它显示错误"索引超出范围。必须是非消极的......"。 任何人都可以给我任何暗示这里有什么问题吗?

2 个答案:

答案 0 :(得分:3)

“索引超出范围......”是因为chart1.Series[0].Points[0],尤其是.Points[0]。不是因为PieColors[0]。如果您想进一步使用它们或者想要更改它们的颜色,您应该先添加一些点。例如:

int index = chart1.Series[0].Points.AddXY(x, y);

然后你可以这样做:

chatr1.Series[0].Points[index].Color = PieColors[0]; //or whatever color

在您的情况下,问题是,在尝试分配Point的颜色后,将点绑定到chart1.Series[0].Points。试着改变这个:

chart1.Series[0].Label = "#PERCENT";
chart1.Series[0].LegendText = "#AXISLABEL";
chart1.Series[0].Points[0].Color = PieColors[0];
chart1.Series[0].Points.DataBindXY(xAxis, Percentage);

chart1.Series[0].Label = "#PERCENT";
chart1.Series[0].LegendText = "#AXISLABEL";
chart1.Series[0].Points.DataBindXY(xAxis, Percentage);
chart1.Series[0].Points[0].Color = PieColors[0];
chart1.Series[0].Points[1].Color = PieColors[1];
chart1.Series[0].Points[2].Color = PieColors[2];

如果你想改变系列颜色而不是Point,你可以写一些类似的东西:

chart1.Series[0].Color = Color.Red; //or any other color, maybe from PieColor

答案 1 :(得分:0)

this.CategoryGraphChart.Series [“Categories”]。Points.AddXY(test.ToString()+“(”+ number +“)”,number);

CategoryGraphChart.Palette = ChartColorPalette.None;

CategoryGraphChart.PaletteCustomColors = new Color [] {Color.BlanchedAlmond,Color.Blue,Color.Yellow};

此代码将有效......