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