我有在那几个曲线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);
和直到用户放大图形能正常工作,竖直线将会然后伸出实际的图形区域(见下文PIC链接,还注意到它未在图内虚线,单数)。
http://imageshack.us/photo/my-images/196/zedgraphzoom.png/
有没有办法解决这个问题(如果仅仅有AA的方式来获得当前变焦的myPane.Xaxis.Scale.Min和Max,然后在ZoomEvent更新图表?)还是有什么更好的类的方式/方法使用其他比LineObj为了这个目的?
相反定义的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
,虽然。
你是在使用LineObj而非CurveItem的好办法,。
对一看位置结构和CoordinateFrame财产。 它允许使用不同的坐标系的X和/或Y.
设置CoordinateFrame
到XScaleYChartFraction
允许使用0D和1d为Y,意思是“底部”和图形窗格中(而不是YAxis.Scale.Min和YAxis.Scale.Max)的“顶部”,作为X继续使用在X轴刻度坐标系。
这意味着你可以使用.AxisChange(),缩放,平移和LineObj不会与Y轴的比例变化地干扰!
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);