JavaFx等效于节点的Graphics context.rotate()

时间:2019-04-13 11:01:01

标签: java javafx transform

如果我在画布上绘制,则可以旋转图形上下文的坐标系,而无需旋转在相应画布上已经绘制的任何内容,这与平移相同。

一个小组中可能有类似的事情吗?如果我只是轮流翻译,那是孩子们,我不会获得正确的效果,因为翻译将自己定位在小组未轮换的系统上。

如果没有,是否有像3d画布那样的功能?

1 个答案:

答案 0 :(得分:0)

正如Slaw所指出的,我正在寻找的是包javafx.scene.transform中的类。

这里是一个示例:假设我要一条线(200,200),其长度为200,且与x轴成60度角。没有transform包也不会很难做到这一点,但它只能作为一个简单的例子。

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();
    }
}