在我的程序中着色图形并添加值

时间:2012-05-21 05:24:22

标签: c# charts

我想问一下,是否可以将图表的负值与正面的颜色区分开来。另外我如何在值上输入标记,例如标记1,2,3..10等的值!值范围从-300000到700000

图表在C#中,我有一个执行以下操作的按钮:

decimal[] numbers = new decimal[20];

for (int i = 0; i < 20; i++) 
{  
    numbers[i] = Convert.ToDecimal(dataGridView1[7, i].Value);  
    chart1.Series["Loan_Balance"].Points.AddXY(i+1, numbers[i]); } 
    chart1.Series["Loan_Balance"].Color = Color.Blue; 
    chart1.ChartAreas[0].AxisX.Interval = 1;
    chart1.ChartAreas[0].AxisY.Interval = 50000;
    chart1.Series["Loan_Balance"].ChartType = SeriesChartType.Range;
}

另外我想问一下,为什么我直接从数据库(datagridview)输入值。例如,在for循环中,不是创建数组并将datagridview中的值转换为decimal,而是直接绘制它们:

chart1.Series["Loan_Balance"].Points.AddXY(i, dataGridView2[i, 0].Value);

chart1.ChartAreas[0].AxisY.Interval = 50000; 表现得很奇怪,大部分时间都不起作用

如果你可以帮助我,那么着色问题会更加重要,我会非常感激。

提前感谢你 最好的祝福 George Georgiou

1 个答案:

答案 0 :(得分:1)

您应该直接创建积分,而不是使用AddXY。这使您可以完全控制包括颜色在内的点。所以,而不是:

chart1.Series["Loan_Balance"].Points.AddXY(i+1, numbers[i]);

使用:

var point = new DataPoint(i+1, numbers[i]);
point.Color = numbers[i] < 0 ? Color.Red : Color.Black; // or whatever logic
point.Label = numbers[i].ToString();                    // and so on
chart1.Series["Loan_Balance"].Points.Add(point);

您可以在此处DataPoint查看可用的其他资源:http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.datapoint.aspx