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