A自己写的连接线算法router

package Draw2D_1;

import org.eclipse.draw2d.AbstractRouter;
import org.eclipse.draw2d.Connection;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.draw2d.geometry.PointList;

public class ChipConnectionRouter extends AbstractRouter{
static Point A_POINT;
public ChipConnectionRouter(ChipTrough chipTrough){

}

public void route(Connection conn) {
// 清空连线的所有点
PointList points = conn.getPoints();
points.removeAllPoints();

// 得到目标和源参考点
Point sourceRef = conn.getSourceAnchor().getReferencePoint();
System.out.println(sourceRef+ " 进来起点坐标");
Point targetRef = conn.getTargetAnchor().getReferencePoint();
System.out.println(sourceRef+ " 进来目标点坐标坐标");

A_POINT = new Point(sourceRef.x, targetRef.y);
A_POINT.setLocation(sourceRef.x, targetRef.y);
// A_POINT.setLocation(sourceRef.x, targetRef.y);

// 得到起始点和结束点
Point startPoint = conn.getSourceAnchor().getLocation(A_POINT);
Point endPoint = conn.getTargetAnchor().getLocation(A_POINT);

// 添加起始点
A_POINT.setLocation(startPoint);
conn.translateToRelative(A_POINT);
System.out.println(A_POINT+ " 起点");
points.addPoint(A_POINT);

// 添加转折点

Point p = new Point(sourceRef.x-40,sourceRef.y+8);
points.addPoint(p);

Point p1 = new Point(sourceRef.x-40,sourceRef.y+130);
points.addPoint(p1);

Point p2 = new Point(targetRef.x+10,sourceRef.y+130);
points.addPoint(p2);

// A_POINT.setLocation(sourceRef.x, targetRef.y);
// conn.translateToRelative(A_POINT);
// System.out.println(A_POINT+ " 转折");
// points.addPoint(A_POINT);

// 添加结束点
A_POINT.setLocation(endPoint);
conn.translateToRelative(A_POINT);
System.out.println(A_POINT+ " 终点");
points.addPoint(A_POINT);

// 设置连线经过的所有点
conn.setPoints(points);
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值