java - 画一条线连接两个矩形

标签 java swing graphics awt

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

  • 我想在已经选择的类矩形和目标类矩形之间画一条线,但是线有一个特点,就是每当我移动其中一个矩形时,连接它们的线就会以直线方式弯曲移动矩形,我希望下图展示我想要实现的目标: alt text

非常感谢一般指南或示例代码

最佳答案

我不懂 Java,但您可以按照以下步骤操作:

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

对于实现,您可以构建一个线类,它使用观察者模式来监听它跟随的两个矩形,因此它可以在其中一个移动或调整大小时更新自身。

关于java - 画一条线连接两个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647454/

相关文章:

java - 怎么可能从java中的不同字节数据中获取相同的字符串?

java - JLabel 未向左对齐

java - 为什么不是所有 Java Swing JTable 都有焦点指示器

java - 如何每天创建新目录,并将其名称作为当前日期

java - 检查远程服务器上的文件,如果存在,则下载它

java - 通过第二个 Web 服务接收 Java http 响应正文

java - JLabel 键盘替代品

c++ - 朴素表面网络算法 : how to connect vertices to form triangles?

java - 将 JPanel 传递给绘制矩形的方法

java - 类扩展了 BufferedImage,但图片不能改变。有什么办法解决这个问题吗?