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);
}


}

你可能感兴趣的:(eclipse,算法)