如何在JavaFX中旋转节点?
此类包含五个属性-
的角属性(双)指定旋转角度。您可以使用setAngle()方法将值设置为此属性。
的轴属性(三维点)指定旋转轴线。您可以使用setAxis()方法将值设置为此属性。
pivotX属性(双)指定枢轴点的x坐标。您可以使用setPivotX()方法将值设置为此属性。
pivotY属性(双)指定枢轴点的y坐标。您可以使用setPivotY()方法将值设置为此属性。
pivotZ属性(双)指定枢转点的z坐标。您可以使用setPivotZ()方法将值设置为此属性。
JavaFX中的每个节点都包含一个可观察的列表,以保存要应用于节点上的所有转换。您可以使用getTransforms()方法获取此列表。
在JavaFX中旋转节点-
实例化Rotate类。
使用setter方法设置角度和枢轴点。
使用getTransforms()方法从节点(要旋转的节点)获取变换列表。
向其添加上面创建的旋转对象。
将节点添加到场景。
示例
下面的JavaFX示例演示了旋转变换。它包含一个2D几何形状和一个滑块,代表角度值。如果移动滑块,则对象将被旋转。
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
public class RotationExample extends Application {
public void start(Stage stage) {
//创建一个矩形
Rectangle rect = new Rectangle(300, 100, 75, 75);
rect.setFill(Color.BLUEVIOLET);
rect.setStrokeWidth(5.0);
rect.setStroke(Color.BROWN);
//设置滑块
Slider slider = new Slider(0, 360, 0);
slider.setShowTickLabels(true);
slider.setShowTickMarks(true);
slider.setMajorTickUnit(90);
slider.setBlockIncrement(10);
slider.setOrientation(Orientation.VERTICAL);
slider.setLayoutX(2);
slider.setLayoutY(195);
//创建旋转变换
Rotate rotate = new Rotate();
//设置旋转的枢轴点
rotate.setPivotX(300);
rotate.setPivotY(100);
//将转换添加到矩形
rect.getTransforms().addAll(rotate);
//将转换链接到滑块
slider.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){
//设置旋转角度
rotate.setAngle((double) newValue);
}
});
//将变换添加到圆中
rect.getTransforms().add(rotate);
//创建窗格
BorderPane pane = new BorderPane();
pane.setRight(new VBox(new Label("Rotate"), slider));
pane.setCenter(rect);
//准备场景
Scene scene = new Scene(pane, 600, 300);
stage.setTitle("Rotation Example");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]){
launch(args);
}
}输出结果