我用picturebox绘制了一个时间、压力坐标轴,
并读取了
   小时         压力(KPa)
  1.977778      12035.170   
  2.979167      12035.020   
  6.780556      12035.070   
  14.981944     12035.150   
  19.983333     12035.040   
  21.984722     12034.970   
  22.986111     12034.980   
  23.787500     12035.070   
  25.988889     12035.050   
  29.990278     12035.110   
  30.991667     12035.070   
  31.193056     12035.060   
  38.994444     12035.140   
  39.995833     12035.000   
  40.997222     12035.060   
而且数据量很大,并绘制了曲线,如何我用鼠标点击坐标上的某个位置,显示这个位置的时间和压力,求高手给个最快的算法。

解决方案 »

  1.   

    如果你是在PictureBox上绘制曲线,那么编写PictureBox的Mouse_Down事件即可
      

  2.   


    Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MsgBox "时间=" & X
    MsgBox "压力=" & X
    End Sub
    '当然X,Y还要和你的程序中所画的时间,压力值有一个对应的转换
      

  3.   

    数据------(通过某种与显示区有关的关系转换为显示区的图象)----->绘制到显示区显示区的鼠标事件-----(得到显示区的鼠标坐标,通过上面的关系,还原为与数据相关的坐标)---->在数据中查询,返回最接近的一个数据比如:有三个点:100,200
    150,210
    200,220绘在显示区时,假设是1:1的关系,这是最简单的关系了,没考虑显示区滚动的问题(比如有10000个点,就得显示个滚动条).那么,你鼠标的MouseUp事件里就能得到一个坐标,直接把这个X与Y到上面的三个点中循环比较,并看看离哪个点的距离最近(一般来说,鼠标直接点到那个像素上的可能性不是很大,你不是在玩狙击游戏),就判断为用户想点的是这个点.
      

  4.   

    MouseMovePrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Debug.Print X; Y
    End Sub
      

  5.   

    MouseMovePrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
      Debug.Print X; Y
    End Sub