有回响的山谷 2023-12-27 17:50 采纳率: 53.3%
浏览 20
已结题

使用zedgraph绘制辅助线,如何获取当前曲线的值

我有一个zedgraph的,添加了多条曲线后,绘制了两条辅助线,想通过辅助线与曲线的相汇,显示焦点的坐标值
目前的现象,我切换显示曲线,但是坐标值一直都是显示最后一个Y轴的坐标值

/// <param name="px1">X轴辅助线1坐标</param>
/// <param name="px2">X轴辅助线2坐标</param>
/// <param name="py1">Y轴辅助线1坐标</param>
/// <param name="py2">Y轴辅助线2坐标</param>
private void UpdateCurrentLocation(int px1, int px2, int py1, int py2)
{
    PointF pointFx1 = new PointF(px1, 50);
    PointF pointFx2 = new PointF(px2, 20);
    PointF pointFy1 = new PointF(30, py1);
    PointF pointFy2 = new PointF(40, py2);
    double dbX1x, dbX1y, dbX2x, dbX2y, dbY1x, dbY1y, dbY2x, dbY2y;
    GraphPane pPanel = this.zedGraphChart.GraphPane;
    //获取位置点信息
    pPanel.ReverseTransform(pointFy1, out dbY1x, out dbY1y);
    pPanel.ReverseTransform(pointFy2, out dbY2x, out dbY2y);
    pPanel.ReverseTransform(pointFx1, out dbX1x, out dbX1y);
    pPanel.ReverseTransform(pointFx2, out dbX2x, out dbX2y);
    if (cbxcauor1.Text.Trim().Length != 0)
    {
        ZedGraph.Scale pScale1 = pPanel.YAxisList[cbxcauor1.SelectedIndex].Scale;
        ZedGraph.Scale pScale2 = pPanel.YAxisList[cbxcauor2.SelectedIndex].Scale;
        double dbLength1 = pScale1.Max - pScale1.Min;
        double dbLength2 = pScale2.Max - pScale2.Min;
        double dbStartMin1 = pScale1.Min;
        double dbStartMin2 = pScale2.Min;
        ExDrawLineData pDrawData1 = this.zedGraphChart.GetCurve(cbxcauor1.Text);
        ExDrawLineData pDrawData2 = this.zedGraphChart.GetCurve(cbxcauor2.Text);
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/4687eaf8961a4071be1fc5ef89785763.png "#left")

        dbY1y = pDrawData1.TransformPointY(dbLength1, dbStartMin1, dbY1y);
        dbY2y = pDrawData2.TransformPointY(dbLength2, dbStartMin2, dbY2y);
    }
    txbTime1.Text = (dbX1x+2.65).ToString("0.00");
    txbTime2.Text = (dbX2x+2.65).ToString("0.00");
    txbValue1.Text = dbY1y.ToString("0.00");
    txbValue2.Text = dbY2y.ToString("0.00");
}

img

  • 写回答

1条回答 默认 最新

  • 有回响的山谷 2024-01-02 10:25
    关注

    dbY1y = pPanel.YAxisList[cbxcauor1.SelectedIndex].Scale.ReverseTransform(pointFy1.Y);
    dbY2y = pPanel.YAxisList[cbxcauor2.SelectedIndex].Scale.ReverseTransform(pointFy2.Y);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月2日
  • 已采纳回答 1月2日
  • 修改了问题 12月27日
  • 创建了问题 12月27日