ZedGraph - Как отобразить курсор в точке x, y без использования мыши? - PullRequest
3 голосов
/ 20 марта 2011

Я рисую кривую в 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, y на myCurveкак это:

SetCursor(myCurve, list1[3]);

Ответы [ 2 ]

1 голос
/ 05 февраля 2015

Вот простой и более эффективный пример создания перекрестного курсора, который является частью коллекции объектов графика, поэтому вы можете управлять масштабированием и печатью на нем. Это добавляет два "LineObj" в коллекции "GraphObjList". Код: поместите курсор в 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.

1 голос
/ 21 марта 2011

Зная конкретную точку вашей кривой, вы можете использовать GraphPane.GeneralTransform(...) метод

Таким образом, используя следующий код:

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

даст вам координаты, преобразованные в конкретную точку на экране (в пикселях).

Затем вам нужно найти какой-нибудь высокоуровневый метод (возможно, в формах Windows ...), который бы переместил ваш курсор в эту точку.

...