首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在其他coord系统的弦中还有其他计算X值的方法吗?

在其他coord系统的弦中还有其他计算X值的方法吗?
EN

Stack Overflow用户
提问于 2013-05-08 15:34:16
回答 1查看 127关注 0票数 0

抱歉,奇怪的话题名称,但我不知道怎么命名它。

问题是..。我有一个曲线控制仪。里面画了一些线。

我有图表区域的左边框和图区的右边框。

我把垂直线画成PictureBoxes而不是zedgraph,所以它们在不同的和弦中移动。这条垂直线可以向左和右移动。

这样,我就可以在XAxis的同弦中得到X值:

代码语言:javascript
复制
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;
}

如果使用else,这段代码与else一样细,但在我的示例中,它计算出了一些错误。

我希望有人能理解这一点。

用新代码更新:

代码语言:javascript
复制
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;
}

结果:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-08 16:43:14

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16444682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档