JavaFX - Transformaciones
La transformación significa cambiar algunos gráficos en otra cosa mediante la aplicación de reglas. Podemos tener varios tipos de transformaciones comoTranslation, Scaling Up or Down, Rotation, Shearing, etc.
Con JavaFX, puede aplicar transformaciones en nodos como rotación, escalado y traducción. Todas estas transformaciones están representadas por varias clases y estas pertenecen al paquetejavafx.scene.transform.
S. No | Transformación y descripción |
---|---|
1 | Rotación En rotación, rotamos el objeto en un ángulo particular θ (theta) desde su origen. |
2 | Escalada Para cambiar el tamaño de un objeto, se usa la transformación de escala. |
3 | Traducción Mueve un objeto a una posición diferente en la pantalla. |
4 | Cizallamiento Una transformación que inclina la forma de un objeto se llama Transformación de corte. |
Transformaciones múltiples
También puede aplicar múltiples transformaciones en nodos en JavaFX. El siguiente programa es un ejemplo que realizaRotation, Scaling y Translation transformaciones en un rectángulo simultáneamente.
Guarde este código en un archivo con el nombre -
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);
}
}
Compile y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.
javac MultipleTransformationsExample.java
java MultipleTransformationsExample
Al ejecutarse, el programa anterior genera una ventana JavaFX como se muestra a continuación.
Transformaciones en objetos 3D
También puede aplicar transformaciones en objetos 3D. A continuación se muestra un ejemplo que gira y traduce una caja tridimensional.
Guarde este código en un archivo con el nombre 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);
}
}
Compile y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.
javac RotationExample3D.java
java RotationExample3D
Al ejecutarse, el programa anterior genera una ventana JavaFX como se muestra a continuación.