JavaFX - Transformações
Transformação significa transformar alguns gráficos em outra coisa, aplicando regras. Podemos ter vários tipos de transformações, comoTranslation, Scaling Up or Down, Rotation, Shearing, etc.
Usando JavaFX, você pode aplicar transformações em nós, como rotação, dimensionamento e translação. Todas essas transformações são representadas por várias classes e pertencem ao pacotejavafx.scene.transform.
S.Não | Transformação e descrição |
---|---|
1 | Rotação Em rotação, giramos o objeto em um ângulo particular θ (theta) de sua origem. |
2 | Dimensionamento Para alterar o tamanho de um objeto, a transformação de escala é usada. |
3 | Tradução Move um objeto para uma posição diferente na tela. |
4 | Tosquia Uma transformação que inclina a forma de um objeto é chamada de Transformação de cisalhamento. |
Transformações Múltiplas
Você também pode aplicar várias transformações em nós no JavaFX. O programa a seguir é um exemplo que executaRotation, Scaling e Translation transformações em um retângulo simultaneamente.
Salve este código em um arquivo com o nome -
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 e execute o arquivo java salvo no prompt de comando usando os comandos a seguir.
javac MultipleTransformationsExample.java
java MultipleTransformationsExample
Ao ser executado, o programa acima gera uma janela JavaFX conforme mostrado abaixo.
Transformações em objetos 3D
Você também pode aplicar transformações em objetos 3D. A seguir está um exemplo que gira e converte uma caixa tridimensional.
Salve este código em um arquivo com o nome 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 e execute o arquivo java salvo no prompt de comando usando os comandos a seguir.
javac RotationExample3D.java
java RotationExample3D
Ao ser executado, o programa acima gera uma janela JavaFX conforme mostrado abaixo.