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类的构造函数

该类包含下面给出的六个构造函数。

  1. public Rotate() :使用默认参数创建旋转变换。
  2. public Rotate(double angle) :使用以度为单位的指定角度创建旋转变换。枢轴点设置为 (0,0)。
  3. public Rotate(double angle, Point3D axis) :使用指定的变换创建 3D 旋转变换。枢轴点设置为 (0,0,0)。
  4. public Rotate(double angle, double pivotX, double pivotY) :创建具有指定角度和枢轴坐标 (x,y) 的旋转变换。
  5. public Rotate(double angle, double pivotX, double pivotY, double pivotZ) :创建具有指定角度和 3D 枢轴坐标 (x,y,z) 的旋转变换。
  6. 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);
    }
}  

输出结果为:

热门文章

优秀文章