JavaFX - 转换

  • 简述

    转换意味着通过应用规则将一些图形变成其他图形。我们可以有各种类型的转换,例如Translation, Scaling Up or Down, Rotation, Shearing, 等等。
    使用 JavaFX,您可以在节点上应用转换,例如旋转、缩放和平移。所有这些转换都由各种类表示,这些属于包javafx.scene.transform.
    序号 转换与描述
    1 回转
    在旋转中,我们以特定角度旋转对象 θ (theta) 从它的起源。
    2 缩放
    为了改变对象的大小,使用了缩放变换。
    3 平移
    将对象移动到屏幕上的不同位置。
    4 剪切
    使物体形状倾斜的变换称为剪切变换。
  • 多重变换

    您还可以在 JavaFX 中的节点上应用多个转换。下面的程序是一个例子,它执行Rotation, ScalingTranslation 同时对矩形进行变换。
    将此代码保存在名称为的文件中 -
    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); 
       } 
    }
    
    使用以下命令从命令提示符编译并执行保存的 java 文件。
    
    javac MultipleTransformationsExample.java 
    java MultipleTransformationsExample 
    
    执行时,上述程序会生成一个 JavaFX 窗口,如下所示。
    多重变换
  • 3D 对象的变换

    您还可以对 3D 对象应用变换。以下是旋转和平移 3 维框的示例。
    将此代码保存在名称为的文件中 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); 
       } 
    }
    
    使用以下命令从命令提示符编译并执行保存的 java 文件。
    
    javac RotationExample3D.java 
    java RotationExample3D 
    
    执行时,上述程序会生成一个 JavaFX 窗口,如下所示。
    3d 旋转