JavaFX - Chuyển đổi
Chuyển đổi có nghĩa là thay đổi một số đồ họa thành một thứ gì đó khác bằng cách áp dụng các quy tắc. Chúng ta có thể có nhiều kiểu biến đổi khác nhau nhưTranslation, Scaling Up or Down, Rotation, Shearing, Vân vân.
Sử dụng JavaFX, bạn có thể áp dụng các phép biến đổi trên các nút như xoay, chia tỷ lệ và dịch. Tất cả các phép biến đổi này được biểu diễn bằng các lớp khác nhau và chúng thuộc về góijavafx.scene.transform.
S. không | Chuyển đổi & Mô tả |
---|---|
1 | Vòng xoay Khi xoay, chúng tôi xoay đối tượng ở một góc cụ thể θ (theta) từ nguồn gốc của nó. |
2 | Mở rộng quy mô Để thay đổi kích thước của một đối tượng, chuyển đổi tỷ lệ được sử dụng. |
3 | Dịch Di chuyển một đối tượng đến một vị trí khác trên màn hình. |
4 | Cắt xén Một phép biến đổi làm nghiêng hình dạng của một vật thể được gọi là Phép biến đổi Shear. |
Nhiều biến đổi
Bạn cũng có thể áp dụng nhiều phép biến đổi trên các nút trong JavaFX. Chương trình sau đây là một ví dụ thực hiệnRotation, Scaling và Translation các phép biến hình đồng thời trên một hình chữ nhật.
Lưu mã này trong một tệp có tên -
MultipleTransformationsExample.java.
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.scene.transform.Scale;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class MultipleTransformationsExample extends Application {
@Override
public void start(Stage stage) {
//Drawing a Rectangle
Rectangle rectangle = new Rectangle(50, 50, 100, 75);
//Setting the color of the rectangle
rectangle.setFill(Color.BURLYWOOD);
//Setting the stroke color of the rectangle
rectangle.setStroke(Color.BLACK);
//creating the rotation transformation
Rotate rotate = new Rotate();
//Setting the angle for the rotation
rotate.setAngle(20);
//Setting pivot points for the rotation
rotate.setPivotX(150);
rotate.setPivotY(225);
//Creating the scale transformation
Scale scale = new Scale();
//Setting the dimensions for the transformation
scale.setX(1.5);
scale.setY(1.5);
//Setting the pivot point for the transformation
scale.setPivotX(300);
scale.setPivotY(135);
//Creating the translation transformation
Translate translate = new Translate();
//Setting the X,Y,Z coordinates to apply the translation
translate.setX(250);
translate.setY(0);
translate.setZ(0);
//Adding all the transformations to the rectangle
rectangle.getTransforms().addAll(rotate, scale, translate);
//Creating a Group object
Group root = new Group(rectangle);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Multiple transformations");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Biên dịch và thực thi tệp java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac MultipleTransformationsExample.java
java MultipleTransformationsExample
Khi thực thi, chương trình trên tạo một cửa sổ JavaFX như hình dưới đây.
Biến đổi trên các đối tượng 3D
Bạn cũng có thể áp dụng các phép biến đổi trên các đối tượng 3D. Sau đây là một ví dụ xoay và dịch hộp 3 chiều.
Lưu mã này trong một tệp có tên RotationExample3D.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class RotationExample3D extends Application {
@Override
public void start(Stage stage) {
//Drawing a Box
Box box = new Box();
//Setting the properties of the Box
box.setWidth(150.0);
box.setHeight(150.0);
box.setDepth(150.0);
//Creating the translation transformation
Translate translate = new Translate();
translate.setX(400);
translate.setY(150);
translate.setZ(25);
Rotate rxBox = new Rotate(0, 0, 0, 0, Rotate.X_AXIS);
Rotate ryBox = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS);
Rotate rzBox = new Rotate(0, 0, 0, 0, Rotate.Z_AXIS);
rxBox.setAngle(30);
ryBox.setAngle(50);
rzBox.setAngle(30);
box.getTransforms().addAll(translate,rxBox, ryBox, rzBox);
//Creating a Group object
Group root = new Group(box);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a cylinder");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Biên dịch và thực thi tệp java đã lưu từ dấu nhắc lệnh bằng các lệnh sau.
javac RotationExample3D.java
java RotationExample3D
Khi thực thi, chương trình trên tạo một cửa sổ JavaFX như hình dưới đây.