如何在JavaFX中将变换应用于形状?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在JavaFX中将变换应用于形状?相关的知识,希望对你有一定的参考价值。
我想对形状应用变换,并且使用方法setRotate(Double value)
可以旋转形状。现在,如何再次应用转换?转换后如何获取点的坐标?
Polygon p = new Polygon(0,0,0,100,50,50);
p.getPoints(); // output before : 0,0,0,100,50,50
p.setRotate(90);
p.setRotate(90); //not applied
p.getPoints(); // output after: 0,0,0,100,50,50
转换前的三角形:
变换后的三角形:
答案
如果只想旋转,只需将值加起来。 rotate
是“绝对”旋转,不是相对旋转。如果要串联不同的转换,建议使用Transform
,并将它们添加到节点的transform
s列表中。
关于寻找坐标的方法:您可能对父节点中的坐标很感兴趣。您可以使用Node.localToParent
从本地坐标中获取这些值:
@Override
public void start(Stage stage) throws IOException
Polygon p = new Polygon(0,0,0,100,50,50);
p.getPoints(); // output before : 0,0,0,100,50,50
p.getPoints(); // output after: 0,0,0,100,50,50
StackPane root = new StackPane(p);
Scene scene = new Scene(root, 500.0, 400.0);
scene.setOnMouseClicked(evt ->
// add rotation and determine resulting position of (0, 0)
Rotate r = new Rotate(90, (0+0+50) / 3d, (0+100+50) / 3d);
p.getTransforms().add(r);
System.out.println("(0, 0) is now at " + p.localToParent(0, 0));
);
stage.setScene(scene);
stage.show();
以上是关于如何在JavaFX中将变换应用于形状?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaFX 中将 CheckBox 添加到 TableView