1 变换概述
本章介绍JavaFX中支持的变换。
所有的变换都位于javafx.scene.transform
包中,并且是Transform
类的子类。
介绍变换
变换根据一定的参数改变图形对象在坐标系中的位置。JavaFX支持以下类型的变换:
-
平移
-
旋转
-
缩放
-
剪切
这些变换可以应用于独立的节点或节点组。您可以一次应用一个变换,也可以组合变换并将多个变换应用于一个节点。
Transform
类实现了仿射变换的概念。 Affine
类扩展了Transform
类,并作为所有变换的超类。仿射变换基于欧几里得代数,通过使用矩阵从初始坐标映射到其他坐标,同时保持线的直线性和平行性。可以使用observableArrayLists旋转、平移、缩放和剪切来构建仿射变换。
注意:
通常不直接使用Affine
类,而是使用特定的Translate、Scale、Rotate或Shear变换。
JavaFX中的变换可以沿着三个坐标进行,从而使用户能够创建三维(3D)对象和效果。为了管理具有深度的对象在3D图形中的显示,JavaFX实现了z缓冲。Z缓冲确保透视在虚拟世界中与真实世界相同:前景中的实体对象会阻挡其后面的视图。可以使用setDepthTest
类来启用z缓冲。您可以尝试禁用z缓冲(setDepthTest(DepthTest.DISABLE
)在示例应用程序中查看z缓冲的效果。
为了简化变换的使用,JavaFX实现了带有x轴和y轴以及x、y和z轴的变换构造函数。如果要创建二维(2D)效果,只需指定x和y坐标。如果要创建三维效果,请指定所有三个坐标。
要在JavaFX中看到3D对象和变换效果,用户必须启用透视相机。
虽然了解底层概念可以帮助您更有效地使用JavaFX,但您可以通过研究本文档中提供的示例并尝试不同的变换参数来开始使用变换。有关特定类、方法或其他功能的更多信息,请参阅API文档。
在本文档中,使用一个木琴应用程序作为示例来说明所有可用的变换。您可以通过点击transformations.zip链接下载其源代码。