2012-08-03 24 views
5

私はZedGraphControlにいくつかの曲線があるので、いくつかの固定されたx位置に垂直線を追加したいと思います。もちろん、線は実際のグラフ領域内にあるだけです。LineObjのZedGraph垂直線の問題

Iは

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); 

以下試み、これは(また、それは破線されていないことを確認し、以下PICリンクを参照し、ユーザがグラフをズームするまで、垂直線は、実際のグラフ領域の外に伸びるであろう正常に動作しますグラフ内、奇数)。

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

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

答えて

2

代わりの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を追加するとダッシュが正しく表示されるようです。

+0

ワークス()あとがきには、その場合には、下部に余白が追加されますが、私はあなたの行を追加する前に、その呼び出しを必要とすべてを行うことができますね。ありがとうございました! – HischT

+2

2つ目のY軸を作成し、scale.maxとminを0と1の両方に設定し、2つの点(x、0)と(x、1)を付けてLineItemを接続します。このように、それは他の軸から独立しています。 – Larry

2

CurveItemではなくLineObjを使用していました。

Location構造体とCoordinateFrameプロパティを参照してください。

XScaleYChartFractionに設定すると、0dと1dをYとして使用できます。これは、グラフペインの「下」と「上」を意味します(代わりに、グラフペインの「上」を意味します)。 YAxis.Scale.MinおよびYAxis.Scale.Max)のX軸座標系を使用し続けます。

これは、.AxisChange()、zoom、panを使用でき、LineObjがY軸のスケール変更に干渉しないことを意味します。うまく限り、あなたはzedGraphControl.AxisChangeを呼んではいけないよう

var line = new LineObj(Color.Black, xPos, 0, xPos, 1); 

line.Location.CoordinateFrame = XScaleYChartFraction; // This do the trick ! 
line.IsClippedToChartRect = true; 

line.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash; 
line.Line.Width = 1f; 

myPane.GraphObjList.Add(line); 
+0

これはLineItemを追加するよりもはるかに良い方法です。なぜなら、垂直線は概念的にデータ曲線と異なるからです。 – ricovox

+0

私のクエストはついに終わりました。 – KDecker

関連する問題