2014-03-12 73 views
0

我使用Chart control显示我的网络统计数据(下载,上传)我的系列线:添加标题[MSChart的]

chart1.Titles.Add("Test Chart"); 

Series seriesDownload = new Series("KB/s"); 
seriesDownload.Color = Color.DarkBlue; 
seriesDownload.ChartType = SeriesChartType.Spline; 
seriesDownload.BorderWidth = 2; 
chart1.Series.Add(seriesDownload); 

Series seriesPps = new Series("pps"); 
seriesPps.Color = Color.Black; 
seriesPps.ChartType = SeriesChartType.Spline; 
seriesPps.BorderWidth = 2; 
chart1.Series.Add(seriesPps); 

是否有可能以两种颜色来区分增加近每一行文字?

enter image description here

private void chartTimer_Tick(object sender, EventArgs e) 
{ 
    chart1.Series[1].LegendText = chart1.Series[1].Name = str + " KB/s"; 
    DataPoint Point = chart1.Series[1].Points[chart1.Series[1].Points.Count - 1]; 
    Point.Label = chart1.Series[1].Name; 

    DataPoint _point = default(DataPoint); 
    foreach (DataPoint item in chart1.Series[1].Points) 
    { 
     item.Label = ""; 
     item.MarkerStyle = MarkerStyle.None; 
    } 
} 

回答

1

像这样将与系列名称添加一个标签,在你的系列中的最后一个点。这是VB.NET,但你应该能够将其解析到C#

'remove all previous datapoint labels 
Dim _point As DataPoint 
For Each _point In Chart1.Series(i).Points 
    _point.Label = "" 
    _point.MarkerStyle = MarkerStyle.None 
Next 


'add label to last point 
Dim Point As DataPoint = Chart1.Series(i).Points(Chart1.Series(i).Points.Count - 1) 
Point.Label = Chart1.Series(i).Name 
Point.MarkerStyle = MarkerStyle.Circle 

enter image description here

抑或是你寻找到填充系列名称的传说?然后

Chart1.Series(i).LegendText = Chart1.Series(i).Name 

编辑基础上,askee提交的代码在C#

private void chartTimer_Tick(object sender, EventArgs e) 
{ 

    foreach (DataPoint item in chart1.Series[1].Points) 
    { 
     item.Label = ""; 
    } 

    chart1.Series[1].LegendText = chart1.Series[1].Name = str + " KB/s"; 
    DataPoint Point = chart1.Series[1].Points[chart1.Series[1].Points.Count - 1]; 
    Point.Label = chart1.Series[1].Name; 

} 
+0

我正在寻找在蓝线附近显示标题“KB/s”,所以我尝试使用chart1.Series [0] .LegendText = chart1 .Series [0] .Name =“KB/s”但没有任何更改 – user3328870

+0

您的“图表”是否有图例?确保启用它。否则,您必须向图表添加一个新图例,例如Chart1.Legends.Add(“Legend1”)',然后设置图例文本。还要确保你使用了正确的'系列[i]',这样你就可以索引正确的系列 – TylerDurden

+0

图例启用属性设置为true,设置我的传奇标题后,我可以看到这个文本,但在我的第一行上面 – user3328870

0

更改系列的名称是不是好的做法,因为SeriesCollection可以通过名称索引(例如chart1.Series["MySeries"]),然后名称更改后可能会失败。

如果您试图在代码末尾添加静态标签,则可以将其作为智能标签进行添加。看看进入"#VALX#", "#VAL#"改性剂标签的使用方法:

DataPoint Point = chart1.Series[1].Points[chart1.Series[1].Points.Count - 1]; 
Point.Label = "#VAL" + " kB/s"; 

将当前x或y值会自动添加到标签。请参阅http://msdn.microsoft.com/en-us/library/dd456687(v=vs.110).aspx

另外,将Series的名称放入类中的常量变量(或另一类中的静态变量)非常有用,因此您可以将它们编入索引而不必担心输入错误。使您的代码也更容易理解。

private const string _downloadSeries = "download"; 

// in some initialization method 
Series seriesDownload = new Series(_downloadSeries); 
chart1.Series.Add(seriesDownload); 

// Access the series 
DataPoint point = chart1.Series[_downloadSeries].Points[0]; 

例如。

编辑:如果你只是想区分两种颜色,这正是一个传说是什么。如果你想显示最新值,那么这段代码将会这样做