LineChart 的DataPoints 是连接的,因此不可能真正将其分开。然而,通往DataPoint 的每个段都可以有自己的颜色,其中包括Color.Transparent,这很适合一个简单的技巧..
不用额外添加Series或Annotations,你的两个问题可以这样解决:
这里有两个示例方法:
void addSpike(Series s, int index, double spikeWidth)
{
DataPoint dp = s.Points[index];
DataPoint dp1 = new DataPoint(dp.XValue + spikeWidth, dp.YValues[0]);
s.Points.Insert(index+1, dp1);
s.Points.Insert(index+2, dp);
}
void addLine(Series s, int index, double spikeDist, double spikeWidth)
{
DataPoint dp = s.Points[index];
DataPoint dp1 = new DataPoint(dp.XValue + spikeDist, dp.YValues[0]);
DataPoint dp2 = new DataPoint(dp.XValue + spikeWidth, dp.YValues[0]);
DataPoint dp0 = dp.Clone();
dp1.Color = Color.Transparent;
dp2.Color = dp.Color;
dp2.BorderWidth = 2; // optional
dp0.Color = Color.Transparent;
s.Points.Insert(index + 1, dp1);
s.Points.Insert(index + 2, dp2);
s.Points.Insert(index + 3, dp0);
}
你可以这样称呼他们:
addSpike(chart1.Series[0], 3, 50d);
addLine(chart1.Series[0], 6, 30d, 80d);
请注意,他们将 2 或 3 个 DataPoints 添加到 Points 集合中!
当然,您可以根据需要设置额外线条的颜色和宽度(又名 BorderWidth),并将它们包含在参数列表中..
如果您想保持积分集合不变,您也可以简单地创建一个“尖峰系列”并在那里添加尖峰点。诀窍是用透明线“跳”到新点!