JavaFX Rotate类
旋转可以定义为物体旋转一定角度θ(θ)的过程。在 JavaFX 中,类javafx.scene.transform.Rotate表示旋转变换。
该图像说明了旋转变换。图像中显示的矩形沿 Y 轴旋转了角度 θ。矩形的坐标由于旋转而改变,而边缘保持相同的长度。
1 Rotate类的属性
属性 | 描述 | setter方法 |
---|---|---|
angle | 它是一个双重类型的属性。它表示以度为单位的旋转角度。 | setAngle(double value) |
axis | 它是一个对象类型属性。它代表旋转轴。 | setAxis(Point3D value) |
pivotX | 它是一个双重类型的属性。它表示旋转枢轴点的 X 坐标。 | setPivotX(double value) |
pivotY | 它是一个双重类型的属性。它表示旋转枢轴点的 Y 坐标。 | setPivotY(double value) |
pivotZ | 它是一个双重类型的属性。它表示旋转枢轴点的 Z 坐标。 | setPivotZ(double value) |
2 Rotate类的构造函数
该类包含下面给出的六个构造函数。
- public Rotate() :使用默认参数创建旋转变换。
- public Rotate(double angle) :使用以度为单位的指定角度创建旋转变换。枢轴点设置为 (0,0)。
- public Rotate(double angle, Point3D axis) :使用指定的变换创建 3D 旋转变换。枢轴点设置为 (0,0,0)。
- public Rotate(double angle, double pivotX, double pivotY) :创建具有指定角度和枢轴坐标 (x,y) 的旋转变换。
- public Rotate(double angle, double pivotX, double pivotY, double pivotZ) :创建具有指定角度和 3D 枢轴坐标 (x,y,z) 的旋转变换。
- public Rotate(double angle, double pivotX, double pivotY, double pivotZ,Point3D Axis) :创建具有指定角度和枢轴坐标 (x,y,z) 的 3D 旋转变换。
3 Rotate类的例子
下面的例子说明了旋转变换的实现。在这里,我们创建了两个矩形。一个填充了柠檬绿色,而另一个填充了深灰色。深灰色矩形沿枢轴点坐标 (100,300) 旋转 30 度。
package com.yiidian;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
public class RotateExample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// creating the rectangles
Rectangle rect1 = new Rectangle(100,100,200,200);
Rectangle rect2 = new Rectangle(100,100,200,200);
// setting the color and stroke for the Rectangles
rect1.setFill(Color.LIMEGREEN);
rect2.setFill(Color.DARKGREY);
rect1.setStroke(Color.BLACK);
rect2.setStroke(Color.BLACK);
// instantiating the Rotate class.
Rotate rotate = new Rotate();
//setting properties for the rotate object.
rotate.setAngle(30);
rotate.setPivotX(100);
rotate.setPivotY(300);
//rotating the 2nd rectangle.
rect2.getTransforms().add(rotate);
Group root = new Group();
root.getChildren().addAll(rect1,rect2);
Scene scene = new Scene(root,500,420);
primaryStage.setScene(scene);
primaryStage.setTitle("一点教程网:Rotation Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
输出结果为:
热门文章
优秀文章