我必须实现连接不同图表的边缘。边缘可能是曲线,我正在使用SWT库实现。我的问题是,当2个点不在同一y轴上时,我必须旋转圆弧,但是圆弧的坐标会向右移动,不知道为什么。 我一整天都在尝试为翻译设置任何值,而没有找到解决方案
我的代码:
@Override
public void paintControl(PaintEvent e) {
Point p = oval1.getP();
p1=p;
p = oval2.getP();
p2=p;
double theta = Math.atan2(p2.y - p1.y, p2.x - p1.x);
Transform t=new Transform(canvasContainer.getDisplay());
float angle = (float) Math.toDegrees(Math.atan2(p2.y - p1.y, p2.x - p1.x));
if(angle < 0){
angle += 360;
}
int distance = (int) Math.sqrt((p2.x-p1.x)*(p2.x-p1.x) + (p2.y-p1.y)*(p2.y-p1.y));
t.rotate((float) angle);
t.translate((float) (theta*250),- (float) (theta*100));
e.gc.setTransform(t);
e.gc.drawArc(p1.x, p1.y-25, distance, 50, 0, 180);
t.rotate(-(float)angle);
e.gc.setTransform(t);
}
};