我使用 C# 图表来显示一段时间内的海潮。 我想用垂直线标记实际时间。
与
配合良好private void VerticalLine()
{
double MyDate = DateTime.Now.ToOADate();
double maxDataPoint = chart.ChartAreas[0].AxisY.Maximum;
double minDataPoint = chart.ChartAreas[0].AxisY.Minimum;
LineAnnotation annotation = new LineAnnotation();
annotation.IsSizeAlwaysRelative = false;
annotation.AxisX = chart.ChartAreas[0].AxisX;
annotation.AxisY = chart.ChartAreas[0].AxisY;
annotation.AnchorY = minDataPoint;
annotation.Height = maxDataPoint - minDataPoint; ;
annotation.Width = 0;
annotation.LineWidth = 1;
annotation.StartCap = LineAnchorCapStyle.None;
annotation.EndCap = LineAnchorCapStyle.None;
annotation.AnchorX = MyDate; // <- your point
annotation.LineColor = Color.Red; // <- your color
chart.Annotations.Add(annotation);
}
private void timer_Tick(object sender, EventArgs e)
{
VerticalLine();
}
但是当我将
VerticalLine()
连接到计时器时
随着时间的推移,它会产生多条垂直线。
如何避免这种情况?
欢迎来到奇妙的编程世界。 复制并粘贴示例代码(如
// <- your point
和 // <- your color
注释所示)只能让您到目前为止;您需要真正理解代码的作用才能有效地使用它。
您可能认为您可以通过在堆栈溢出时一次询问一个问题来实现工作程序,但这严重低估了您将遇到的问题数量。从大的规模来看,这是行不通的。所以,你必须使用 Spock 博士最喜欢的工具:这个罕见且难以捉摸的东西,称为“逻辑”。
因此,您会看到线条被添加到图表中,但没有被删除。然后查看代码,您会看到
chart.Annotations.Add()
调用,但没有相应的 .Remove()
操作。看到连接了吗?