ZedGraph垂直线与LineObj问题

His*_*chT 6 .net c# zedgraph graph

我有一个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);
Run Code Online (Sandbox Code Playgroud)

这个工作正常,直到用户缩放图形,然后垂直线将伸出实际的图形区域(参见下面的图片链接,也注意它没有在图形内部虚线,奇数).

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

有没有办法解决这个问题(如果只有一种方法可以获得当前缩放的myPane.Xaxis.Scale.Min和Max,然后更新ZoomEvent中的图形?)或者是否有更好的类/方法可以使用其他为此目的比LineObj?

And*_*son 4

不定义 a LineObj,而是定义 aLineItem并将其添加到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);
Run Code Online (Sandbox Code Playgroud)

这绑定line到图形窗格中的坐标系,以便当您缩放或平移时,line位置仍将限制在图形中。当然,如果缩小而不更新y的值line,则line端点将位于图形内部。

根据我的个人经验,我知道在 Zedgraph 中冲刺可能是一个问题;然而,添加 a 时,似乎破折号可以正确显示LineItem

  • 一种解决方案是创建辅助 Y 轴,然后将其scale.max 和 min 设置为 0 和 1,然后使用两个点 (x, 0) 和 (x, 1) 将 LineItem 附加到它。这样,它就保持独立于另一个轴。 (2认同)