2013-05-08 135 views
0

對不起,對於奇怪的主題名稱,但我不知道如何命名它。 enter image description here有沒有其他方法可以計算其他座標系座標系中的X值?

問題是..我有一個zedgraph控件。裏面有一些線條。

我有圖區左邊界和圖區右邊界的座標。

我通過zedgraph控件將垂直線繪製爲PictureBox,因此它們在不同的座標系中移動。這條垂直線可以左右移動。

這樣,我想在X軸的COORDS獲得X值:

public double Get_X_InContextOfChart(int left_coord_of_border) //Left of vertical line 
{ 
    //zed_graph.GraphPane.XAxis.Scale.Min is minimal X value shown on XAxis 
    //zed_graph.GraphPane.Chart.Rect.Left is Left of YAxis 
    //Same for else if, aside of using Right and maximum X at right 
    if (zed_graph.GraphPane.XAxis.Scale.Min != 0) //to avoid division by zero 
     return (left_coord_of_border * zed_graph.GraphPane.XAxis.Scale.Min)/zed_graph.GraphPane.Chart.Rect.Left; 
    else if (zed_graph.GraphPane.XAxis.Scale.Max != 0) 
     return (left_coord_of_border * zed_graph.GraphPane.XAxis.Scale.Max)/zed_graph.GraphPane.Chart.Rect.Right; 

    return double.NaN; 
} 

此代碼計算X罰款,只要否則如果使用,但在我的例子也計算了什麼。

我希望有人能夠理解這一點。

更新與新代碼:

public double Get_X_InContextOfChart(int left_coord_of_border) 
{ 
    double scale_left = zed_graph.GraphPane.XAxis.Scale.Min; 
    double scale_right = zed_graph.GraphPane.XAxis.Scale.Max; 
    double graph_width = zed_graph.GraphPane.Chart.Rect.Width; 
    double x = left_coord_of_border; 

    return scale_left + (scale_right - scale_left)/graph_width * x; 
} 

結果: enter image description here

回答

1
scale_left = -0.1 
scale_right = 0.9 
graph_width = 540 // pixels 
x = 190   // pixels 

scale_x = scale_left + (scale_right - scale_left)/graph_width * x // 0.25 
+0

謝謝您的回答,但是,它仍然計算問題的話...請,我的問題 – Kosmos 2013-05-08 17:10:07

+0

不動神色更新它通過這樣做double x = left_coord_of_border - zed_graph.GraphPane.Chart.Rect.Left;這是我所有問題的根源......謝謝你的基本想法 – Kosmos 2013-05-08 17:26:21

+0

@Kosmos - 'double x = left_coord_of_border - 56;' – 2013-05-08 17:26:24