6

いくつかの曲線を含むZedGraphControlがあり、いくつかの固定されたx位置に垂直線を追加したいと思います。もちろん、線は実際のグラフ領域内にのみ存在する必要があります。

フォローしてみました

LineObj line = new LineObj(Color.Black, xPos, myPane.YAxis.Scale.Min, xPos, myPane.YAxis.Scale.Max);  
line.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;
line.Line.Width = 1f;
myPane.GraphObjList.Add(line);

これは、ユーザーがグラフをズームするまで正常に機能します。その後、垂直線が実際のグラフ領域から伸びます(下の写真のリンクを参照してください。グラフ内に破線がないことに注意してください。奇妙なことです)。

http://imageshack.us/photo/my-images/196/zedgraphzoom.png/

これを解決する方法はありますか(現在のズームのmyPane.Xaxis.Scale.MinとMaxを取得し、ZoomEventでグラフを更新する方法があった場合のみ)、または他を使用するためのより良いクラス/メソッドはありますか?この目的のためにLineObjよりも?

4

2 に答える 2

3

を定義する代わりに、 をLineObj定義してLineItemに追加しGraphPane.CurveListます。

LineItem line = new LineItem(String.Empty, new[] { xPos, xPos },
                new[] { myPane.YAxis.Scale.Min, myPane.YAxis.Scale.Max }, 
                Color.Black, SymbolType.None);
line.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;
line.Line.Width = 1f;

myPane.CurveList.Add(line);

lineこれはグラフ ペインの座標系にバインドされるため、ズームまたはパンしてもline位置はグラフ内に限定されます。もちろん、 のy値を更新せずにズームアウトするlineと、line端はグラフの内側になります。

個人的な経験から、Zedgraph ではダッシュが問題になる可能性があることを知っています。ただし、を追加するとダッシュが正しく表示されるようLineItemです。

于 2012-08-03T12:12:24.350 に答える