2017-02-15 55 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