SWT弧的旋转和平移

时间:2019-02-13 18:18:27

标签: java user-interface swt

我必须实现连接不同图表的边缘。边缘可能是曲线,我正在使用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);


        }

    };

0 个答案:

没有答案