如何在javaFX中找到Polygon

时间:2015-07-20 16:02:31

标签: java javafx

我尝试在javafx中设计自定义按钮,但是找到多边形时遇到了一些问题:

public class PlayButton extends Group{
public static final int PLAY = 0, PAUSE = 1;

private int state = PAUSE;
private Circle background;
private Polygon triangle;

public PlayButton(){
    background = new Circle(20);
    background.setStroke(MyApp.FIRST_COLOR);
    background.setStrokeWidth(2);
    background.setEffect(MyApp.DROP_SHADOW);
    background.setCursor(Cursor.HAND);
    background.setFill(MyApp.SECOND_COLOR_OPAQUE);
    this.getChildren().add(background);

    triangle = new Polygon();
    triangle.getPoints().addAll(new Double[]{10.0, 10.0, 40.0, 25.0, 10.0, 40.0});
    triangle.setFill(MyApp.FIRST_COLOR);
    this.getChildren().add(triangle);
}

public void setState(int state){
    this.state = state;
}
}

我的多边形超出了我的背景,但我不明白为什么:

My button

矩形是一个进度条,对他来说没问题 谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

您正在使用三角形的绝对坐标,但如果您希望它们始终重叠,则应该使用相对于圆的坐标。要获得圆圈的封闭矩形的左上角,请执行以下操作:

float[] backgroundTopLeft = new float[] {
    background.getCenterX() - background.getRadius(),
    background.getCenterY() - background.getRadius()};

然后绘制相对于该坐标的三角形作为三角形的左上角。

答案 1 :(得分:0)

经过一些测试后,我认为多边形点的位置是从我的组的中心计算出来的,我背景中圆的半径是20,然后坐标从-20开始到20结束,那么好的坐标是:

triangle.getPoints().addAll(new Double[]{-5.0, -10.0, 12.0, 0.0, -5.0, 10.0});

然后它看起来像那样:
Button

有人可以告诉我,我是错还是对? 否则,我希望这可以帮助别人。