JavaFX 转换
2018-03-18 20:45 更新
JavaFX教程 - JavaFX转换
JavaFX转换相关类位于javafx.scene.transform包中,并且是Transform类的子类。
一个变换是关于如何改变坐标系。 JavaFX支持以下类型的转换:
- Translation
- Rotation
- Scaling
- Shearing
JavaFX Transformations可以在三个坐标上操作,从而允许我们创建三维3D对象和效果。
JavaFX实现了x轴和y轴以及x,y和z轴的变换构造函数。
要创建二维2D效果,请仅指定x和y坐标。要创建3D效果,请指定所有三个坐标。
转换
平移变换将节点沿着一个轴相对于其初始位置从一个位置移动到另一个位置。木琴条的初始位置由x,y和z坐标定义。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Text Fonts"); Group rectangleGroup = new Group(); Scene scene = new Scene(rectangleGroup, 550, 250); Rectangle rect = new Rectangle(); rect.setWidth(100); rect.setHeight(100); rect.setTranslateX( 135); rect.setTranslateY(11.0); rectangleGroup.getChildren().add(rect); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
旋转
旋转变换将围绕指定的枢轴点移动节点。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Text Fonts"); Group rectangleGroup = new Group(); Scene scene = new Scene(rectangleGroup, 550, 250); Rectangle rect = new Rectangle(); rect.setWidth(100); rect.setHeight(100); rect.setRotate(10); rectangleGroup.getChildren().add(rect); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
缩放
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Text Fonts"); Group rectangleGroup = new Group(); Scene scene = new Scene(rectangleGroup, 550, 250); Rectangle rect = new Rectangle(); rect.setWidth(100); rect.setHeight(100); rect.setScaleY(2); rectangleGroup.getChildren().add(rect); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
剪切
要剪切,使用Transform类的剪切类或剪切方法
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.scene.transform.Shear; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Text Fonts"); Group rectangleGroup = new Group(); Scene scene = new Scene(rectangleGroup, 550, 250); Rectangle rect = new Rectangle(); rect.setWidth(100); rect.setHeight(100); Shear sh = new Shear(); sh.setY(0.4); rect.getTransforms().add(sh); rectangleGroup.getChildren().add(rect); primaryStage.setScene(scene); primaryStage.show(); } }
上面的代码生成以下结果。
以上内容是否对您有帮助:
更多建议: