我用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   
而且数据量很大,我还把数据点读到了数组里面point(i).time和point(i).press,并绘制了曲线,如何我用鼠标点击坐标上的某个位置,显示这个位置的时间和压力,求高手给个最快的算法。

解决方案 »

  1.   

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

  2.   

    http://download.csdn.net/source/2368159
      

  3.   

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