VS2005+ZedGraph 5.1.5 Winform
我用下面的方法加了两条参考线
- C# code
private PointPairList lstStart1 = new PointPairList(); private PointPairList lstStart2 = new PointPairList(); private void draw() { lstStart1.Add(5.00, 2.0); lstStart1.Add(9.00, 2.0); lstStart1.Add(9.00, 1.0); myCurve1 = myPane.AddCurve("Min", lstStart1, Color.Red, SymbolType.None); lstStart2.Add(5.00, 2.60); lstStart2.Add(9.00, 2.60); myCurve2 = myPane.AddCurve("Max", lstStart2, Color.Yellow, SymbolType.None); }
然后我用一个循环继续往图表里画线
- C# code
if (i <= 36) { double x = i; double y = 1.5 + Math.Sin(i * 0.2); y = Math.Round(y, 3); list1.Add(x, y); myCurve = myPane.AddCurve("", list1, Color.White, SymbolType.None); zedGraphControl1.GraphPane = myPane; zedGraphControl1.AxisChange(); zedGraphControl1.Refresh(); Application.DoEvents(); }
问题如下:
如果我最后不加myPane.CurveList.Clear();这句的话,绘制曲线会越来越慢(一个循环10毫秒),所以我想达到的要求是,当循环绘制的曲线超过10条的时候,清除最早的一条,也就是说图中只保留最新的10条曲线,但不能清除事先画好的参考线(清除了,重画也可以,但不能把所有曲线都一次清除了,要保留最新的10条)
------解决方案--------------------------------------------------------
Refresh()方法可以强制控件进行重绘
先清除
zedChart.GraphPane.CurveList.Clear();
zedChart.GraphPane.GraphItemList.Clear();
重新绘制
zedChart.AxisChange();
zedChart.Refresh();