4

我正在像这样在 Zedgraph 中绘制曲线:

GraphPane myPane = zgc.GraphPane;
PointPairList list1 = new PointPairList();
for(int i =0; i<10; i++)
    list1.Add(i,i);            
LineItem myCurve = myPane.AddCurve("Title",
          list1, Color.Red, SymbolType.None);        

zgc.AxisChange();
zgc.Refresh();

如何在某个点上显示光标(或任何其他图形对象) x,如下所示:ymyCurve

SetCursor(myCurve, list1[3]);
4

2 回答 2

2

了解曲线的特定点,您可以使用GraphPane.GeneralTransform(...)方法

所以使用以下代码:

var myPoint = myCurve[3];
var screenPoint = myPane.GeneralTransform(myPoint.X, myPoint.Y, CoordType.AxisXYScale);

会给你坐标转换到屏幕上的特定点(以像素为单位)。

然后你需要找到一些更高级别的方法(可能在 Windows 窗体中......)将你的光标移动到那个点。

于 2011-03-21T20:16:00.730 回答
1

这是一个简单且更有效的示例来创建一个十字光标,它是图形对象集合的一部分,因此您可以在其上进行缩放、打印。它在“GraphObjList”集合中添加了两个“LineObj”。代码:将光标放在第一条曲线的第 10 个点

    Dim myPane As GraphPane = zg1.GraphPane    
    Dim myPoint As PointPair = myPane.CurveList.Item(0).Points(10)
    Dim CurseurV1 As New LineObj(Color.Blue, myPoint.X,myPane.YAxis.Scale.Min, myPoint.X, myPane.YAxis.Scale.Max)

    CurseurV1.Line.Width = 0.5
    myPane.GraphObjList.Add(CurseurV1)

    Dim CurseurH1 As New LineObj(Color.Blue, myPane.XAxis.Scale.Min,myPoint.Y, myPane.XAxis.Scale.Max, myPoint.Y)
    CurseurH1.Line.Width = 1
    myPane.GraphObjList.Add(CurseurH1)

完成:使用 ZedGraph.dll 版本 5.1.2.878,您的图形上会有一个蓝色的“十字”光标。

于 2015-02-05T16:28:17.480 回答