JavaFX - Transformacje
Transformacja oznacza zmianę niektórych grafik na coś innego poprzez zastosowanie reguł. Możemy mieć różne typy przekształceń, npTranslation, Scaling Up or Down, Rotation, Shearing, itp.
Korzystając z JavaFX, możesz zastosować transformacje na węzłach, takie jak obrót, skalowanie i translacja. Wszystkie te transformacje są reprezentowane przez różne klasy i należą do pakietujavafx.scene.transform.
S.Nr | Transformacja i opis |
---|---|
1 | Obrót Obracamy obiekt pod określonym kątem θ (theta) od jego pochodzenia. |
2 | skalowanie Aby zmienić rozmiar obiektu, używana jest transformacja skalowania. |
3 | Tłumaczenie Przenosi obiekt w inne miejsce na ekranie. |
4 | Strzyżenie Transformacja, która pochyla kształt obiektu, nazywana jest transformacją ścinania. |
Wiele transformacji
Możesz również zastosować wiele przekształceń na węzłach w JavaFX. Poniższy program jest przykładem, który wykonujeRotation, Scaling i Translation przekształcenia na prostokącie jednocześnie.
Zapisz ten kod w pliku o nazwie -
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);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
javac MultipleTransformationsExample.java
java MultipleTransformationsExample
Podczas wykonywania powyższy program generuje okno JavaFX, jak pokazano poniżej.
Transformacje obiektów 3D
Możesz także zastosować transformacje do obiektów 3D. Poniżej znajduje się przykład, który obraca i tłumaczy trójwymiarowe pudełko.
Zapisz ten kod w pliku o nazwie 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);
}
}
Skompiluj i uruchom zapisany plik java z wiersza poleceń, używając następujących poleceń.
javac RotationExample3D.java
java RotationExample3D
Podczas wykonywania powyższy program generuje okno JavaFX, jak pokazano poniżej.