JavaFX - 使用Shape.union()后维护形状边框

时间:2017-11-06 10:05:02

标签: java javafx shapes

使用union函数后,有没有办法在JavaFX Shape上保持边框/笔划?例如,这是我的代码:

Shape rect = new Rectangle(150, 150);
rect.setFill(Color.WHITE);
rect.setStroke(Color.BLACK);
rect.setStrokeWidth(4);

Line line = new Line(0, 40, 150, 40);
line.setStrokeWidth(2);

Shape combined = Shape.union(line, rect);
combined.setFill(Color.WHITE);
combined.setStroke(Color.BLACK);
pane.getChildren().add(combined);

预期输出:

Expected Output

实际输出:

Actual Output

无论如何,我可以将两者结合在一起,以便将它们拖放到一起吗?

1 个答案:

答案 0 :(得分:1)

您的问题是combined.setFill(Color.WHITE);,因为它清除了之前的所有shape更改。

尝试这样的事情

        Line line = new Line(0, 40, 150, 40);
        Shape rect = new Rectangle(150, 150);

        Shape combined = Shape.subtract(rect,line);
        combined.setFill(Color.WHITE);
        combined.setStroke(Color.BLACK);

        rect.setFill(Color.WHITE);
        rect.setStroke(Color.BLACK);
        rect.setStrokeWidth(4);

        line.setStrokeWidth(2);
        line.setStroke(Color.BLACK);
        line.setFill(Color.BLACK);

        pane.getChildren().add(combined);

out put就像是这个

enter image description here

有关shape.union,subtract,intersect go here

的更多信息