在C#.net中设置饼图颜色

4
我正在尝试使用从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);

它展示了正确数值的饼状图。但是当我试图为香蕉(绿色)、芒果(红色)和苹果(灰色)指定特定颜色时,它显示出错信息:“索引超出范围,必须是非负数……”。有人能给我一些提示吗?

我猜测“索引超出范围”异常与“Points”有关,而不是“PieColors”。为什么在绑定数据之前您期望系列已经有点了呢? - Rotem
我的意思是你的代码在哪里指定了特定的颜色 :) @CrackerBoy - Uğur Aldanmaz
你确定 chart1.Series [0] .Points 数组有任何项吗? - Uğur Aldanmaz
1
我认为@UğurAldanmaz是正确的, 在chart1.Series[0].Points[0].Color = PieColors[0];之前尝试使用chart1.Series[0].Points.DataBindXY(xAxis, Percentage); - AWinkle
1
是的,你说得对。我解决了 :) - Cracker Boy
显示剩余4条评论
2个回答

5
“索引超出范围…”是由于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

在您的情况下,问题是在尝试分配点颜色之后,您将点绑定到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);

To

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];

如果你想改变系列的颜色而不是点的颜色,可以编写类似以下代码:

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

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 };

This code will work...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接