画一条连接两个矩形的线

2022-03-11 00:00:00 graphics java swing awt

我正在用Swing/AWT制作我自己的类图应用程序,但我在此功能上停了下来:

  • 我想在已经选择的Class矩形和目标Class矩形之间画一条线,但是LINE有一个功能,那就是每当我移动其中一个矩形时,连接它们的线就会随着移动的矩形直线弯曲,我希望下面的图片演示我想要实现的目标:

非常感谢通用指南或示例代码


解决方案

我不懂JAVA,但您可以遵循以下步骤:

  • 找到每行矩形的中间位置(应该很简单,只需平均x1+x2和y1+y2)
  • 在上一步中获得的点上使用毕达哥拉斯公式确定彼此最接近的边。
  • 从xa,ya(您在上面步骤中得到的第一个点)开始绘制一条线,并将其绘制在远离矩形的方向。您应该知道此方向,因为您可以知道该点所在的线段。
  • 对xb,yb(第二个矩形上的点)执行相同的操作。如果线条方向相反,您应该将它们绘制到xa-xb或ya-yb的中途(取决于您是水平还是垂直绘制)。如果它们是垂直的(这是正确的词吗?)你应该把它们画到交叉点,所以你从xa,ya画到xa,yb或xa,ya到xb,ya,这取决于你画的是水平线还是垂直线。
  • 应该有一些额外的检查,以查看矩形是否重叠。例如,您不应该在同一方向上绘制线条。在无法确定如何绘制这些直线的情况下,您只需在这两个点之间画一条对角线就足够了。

对于实现,您可以构建一个Line类,该类使用观察器模式侦听它跟随的两个矩形,这样只要其中一个矩形移动或调整大小,它就可以自我更新。

相关文章