2017-02-15 66 views

回答

1

有没有属性,也不CustomAttributes来达到这一目的AxisLabels

CustomLabels会很好地完成这项工作。

下面是增加了在Series每个DataPoint一个CustumLabel,并赋予它一个随机颜色的例子:

enter image description here

设置数据:

Random rnd = new Random(0); 
List<Color> colors = new List<Color>() { Color.Red, Color.Firebrick, Color.Gold, 
    Color.DeepPink, Color.Azure, Color.IndianRed, Color.ForestGreen }; 

ChartArea ca = chart.ChartAreas[0]; 

Series s = chart.Series[0]; 

for (int i = 1; i < 7; i++) 
{ 
    s.Points.AddXY(i, i+ rnd.Next(20 - i)); 
} 

现在添加CustomLabels

foreach (var dp in s.Points) 
{ 
    CustomLabel cl = new CustomLabel(); 
    cl.FromPosition = dp.XValue; 
    cl.ToPosition = dp.XValue ; 
    cl.Text = dp.YValues[0]+ "$"; 
    cl.ForeColor = colors[rnd.Next(colors.Count)]; 

    ca.AxisX.CustomLabels.Add(cl); 
} 

请注意,对于ChartType Radar这是相当简单的;对于大多数其他类型获得FromPositionToPosition是相当棘手的:你需要计算(通常)两点之间的中心..

+0

圣牛!这太神奇了。非常感谢。 – Kasra

+0

是否有可能在'MarkerBorderColor'上获得'DataPoint'颜色? @TaW – Kasra

+0

当然。确保你设置了一个'MarkerStyle',但..! - 'dp.MarkerBorderColor = cl.ForeColor; dp.MarkerColor = Color.MediumAquamarine; dp.MarkerStyle = MarkerStyle.Diamond; dp.MarkerSize = 10;' - [示例](http://imgur.com/a/TTrcl) – TaW