DOC-08-01 变换(Transformation)概述

本章介绍JavaFX中支持的变换。

所有的与变换相关的类都位于javafx.scene.transform包中,并且都继承自Transform类。

介绍变换

所有的变换都是根据一些特定参数来修改图形对象在坐标系统中的位置。JavaFX中支持以下几种类型的变换:

● 平移(Translation)

● 旋转(Rotation)

● 缩放(Scaling)

● 错切(Shearing)

这些变换特效既可以应用在一个独立的节点上,也可以应用在一组节点上。你一次可以指定一个变换应用到一个节点上,也可以将多个变换组合在一起应用到一个节点之上。

Transform类实现了仿射变换(Affine Transformation)的概念。而Affine类继承自Transform类,且是所有变换的超类。Affine Transformation基于欧几里德代数学, 表示从初始坐标系到另一个坐标系的线性映射(通过使用矩阵来实现),并同时保留线条的平直度(Straightness)和平行性(Parallelism)。Affine Transformation能够使用ObservableArrayList旋转、平移、缩放和错切来构建。

注意:一般来说,不要直接使用Affine类,而是使用Translate、Scale、Rotate和Shear等特定变换类。

JavaFX中的变换可以在三个坐标轴方向上实现,这样你就可以创建3D对象和特效。3D图形对象是具有深度的,为了管理它们的显示,在JavaFX中实现了Z缓冲(Z-buffering)。Z-buffering使得虚拟世界里的透视效果和真实世界一致:位于前面的固体对象会遮挡后面的景象。Z-buffering可以通过调用setDepthTest()方法来启用。你可以试着在样例应用程序中关闭Z-buffering(setDepthTest(DepthTest.DISABLE))来查看z-buffer的效果。

为了简化对变换的使用,JavaFX为变换类实现了带有x和y轴的构造函数以及带有x、y和z轴的构造函数。如果你想创建一个2D效果,你可以只指定x和y轴的坐标值。如果你想实现3D效果,则指定所有的3个轴的坐标值。

如果想在JavaFX中看到3D对象及其变换效果,你必须开启透视镜头。

通过了解底层设计可以帮助你更高效地使用JavaFX,你可以通过学习本文档中的样例以及尝试不同的变换参数来开始使用变换。关于一些详细的类、方法以及其它特性的更多信息,请查看API文档。

在本文档中,木琴(Xylophone)应用程序作为样例展示了所有可用的变换效果。你可以通过点击transformations.zip链接下载其源代码。

图1-1 Xylophone应用程序

08_01_01 xylophone

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/08/transformation/
百度已收录