如果我在画布中绘图,我可以旋转graphicscontext的坐标系,而不需要旋转任何已经在相应画布中绘制的内容,就像翻译一样。
在一个组中有没有类似的可能性?如果我只是旋转和平移它的孩子,我得不到正确的效果,因为平移在组的未旋转系统上定位。
如果没有,是否有类似3d画布的功能?
发布于 2019-04-15 02:45:50
正如Slaw所指出的,我正在寻找的是javafx.scene.transform包中的类。
下面是一个示例:假设我想要一条从( 200,200)开始的直线,其长度为200,方向与x轴成60度。如果没有转换包,这也不是很难做到,但它只是一个简单的例子。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Line;
import javafx.scene.transform.Affine;
import javafx.stage.Stage;
public class Example extends Application {
public static void main(String[] args) {
launch(args);
}
public void start(Stage stage) throws Exception {
Group group = new Group();
Scene scene = new Scene(group, 400, 400);
stage.setScene(scene);
// Does not work as intended
Line line1 = new Line(0,0, 200, 0);
line1.setTranslateX(200);
line1.setTranslateY(200);
line1.setRotate(60);
// Does work as intended.
Line line2 = new Line(0, 0, 200, 0);
Affine affine = new Affine();
affine.appendTranslation(200, 200);
affine.appendRotation(60);
line2.getTransforms().add(affine);
group.getChildren().addAll(line1, line2);
stage.show();
}
}
https://stackoverflow.com/questions/55664723
复制相似问题