我目前在进行一个宠物项目,允许用户在Java屏幕上创建图形(顶点/边)。我已经将顶点实现为JComponents,但将边实现为Line2D。当用户在画布上移动鼠标时,如果其在接近某个边缘(或Line2D)的一定距离范围内,则会突出显示该边缘(最接近鼠标的边缘)。
我的问题涉及我如何实现哪个边缘最靠近鼠标。现在,我有一个鼠标侦听器来检测移动;每次鼠标移动时,我的程序循环遍历所有的线条(边缘),并使用Line2D的ptDistSeg()函数确定最接近的线条。如果在阈值内,则会突出显示(在paintcomponent中使用更粗的笔划)。
对我来说,这似乎非常低效,因为它必须每次移动时重新计算鼠标与所有边缘之间的距离。对于顶点来说,这不是问题,因为鼠标侦听器与每个顶点相关联,因此顶点知道何时处理事件。不幸的是,我不能对边缘执行此操作,因为它们表示为无法实现鼠标监听器的Line2D。
那么,有没有更有效的方法来查找最接近的边缘,或者我应该以不同的方式实现边缘?
谢谢。
我的问题涉及我如何实现哪个边缘最靠近鼠标。现在,我有一个鼠标侦听器来检测移动;每次鼠标移动时,我的程序循环遍历所有的线条(边缘),并使用Line2D的ptDistSeg()函数确定最接近的线条。如果在阈值内,则会突出显示(在paintcomponent中使用更粗的笔划)。
对我来说,这似乎非常低效,因为它必须每次移动时重新计算鼠标与所有边缘之间的距离。对于顶点来说,这不是问题,因为鼠标侦听器与每个顶点相关联,因此顶点知道何时处理事件。不幸的是,我不能对边缘执行此操作,因为它们表示为无法实现鼠标监听器的Line2D。
那么,有没有更有效的方法来查找最接近的边缘,或者我应该以不同的方式实现边缘?
谢谢。