确定与 Line2D 重叠的组件

Determine component overlapped by Line2D

没有。 Line2D.I 周围和 Line2D.I 上的组件只想找到重叠的 ones.I 尝试了 line.getbounds().intersects(component) 但它给出了我没有的矩形区域组件 need.Also,distance 有时会给我一个非常接近 Line 但不在 line.Any 解决方案上的组件?

如果您所说的组件是 java 个组件,那么它们是矩形的,您可以使用 line.intersects(component.getBounds())

如果它们是任何其他类型的形状,如果它们不是矩形,则您必须定义该形状并用数学方法处理该线

简答:检查这两个条件中是否至少有一个为真

  • 线的任何端点都在组件内部,使用方法包含
  • 该线与组件边界的任何一侧相交,请使用相交方法。

详细说明: 这些是可能的情况:

  • 线的一个端点在组件内部(这包括线完全在组件内部的情况);
  • 线穿过组件,但线的所有端点都在对象之外;在这种情况下,它会与两条边相交,但一条足以验证。
  • 在所有其他情况下,线和组件彼此不重叠,我们不关心。

只有中间的项目符号有点棘手,但是由于您只测试 jcomponent,所以生活很简单,因为它们是与轴对齐的矩形。您可以轻松计算组件边界边的端点。边界由点 (x,y) 给出,宽度为 w,高度为 h。这为您提供了四个方面:

  • (x,y) - (x+w,y)
  • (x,y) - (x,y+h)
  • (x,y+h) - (x,y+h)
  • (x+w,y) - (x+w,y+h)