2011-03-19 59 views
3

我繪製曲線在Zedgraph這樣的:ZedGraph - 如何在不使用鼠標的情況下在x,y點顯示光標?

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

我怎樣才能上myCurve顯示在一定的xy點的光標(或任何其他圖形對象)是這樣的:

SetCursor(myCurve, list1[3]); 

回答

1

瞭解你的曲線的特定點您可以使用GraphPane.GeneralTransform(...)方法

因此,使用下面的代碼:

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

會給你座標變換到屏幕上的特定點(以像素爲單位)。

然後,你需要找到一些更高級別的方法(可能在Windows窗體中......),將您的光標移動到該點。

+0

工程很棒。謝謝 – tomfox66 2011-03-22 22:15:27

1

下面是一個簡單而高效的示例,用於創建十字光標,它是圖形對象集合的一部分,因此您可以操作縮放,打印。它在「GraphObjList」集合中添加兩個「LineObj」。 代碼:將光標放置於第一曲線

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) 

它的完成的第10點:你必須使用ZedGraph.dll版本5.1.2.878您graphe一個藍色的「十字」光標。

相關問題