5.7.2 变换
JavaFX提供了对用户界面组件进行变换的支持。通过变换能力,可以改变组件的大小和位置。所有Node类的子类对象都可以进行变换。JavaFX提供了四种不同的变换方式,定义在javafx.scene.transform包中。第一种变换方式是平移,即沿着X、Y和Z轴平行移动。平移变换由javafx.scene.transform.Translate类完成。在创建Translate类的对象时,要指定在X、Y和Z轴上的平移量。第二种变换方式是旋转,即以某个点作为中心,旋转指定的角度。旋转变换由javafx.scene.transform.Rotate类完成。在创建Rotate类的对象时,要指定旋转的角度、旋转中心点的坐标和旋转使用的坐标轴。第三种变换是缩放,即以某个点为中心,沿着X、Y和Z轴放大或缩小。缩放变换由javafx.scene.transform.Scale类表示。在创建Scale类的对象时,要指定缩放的中心点,以及在X、Y和Z轴上的缩放比例。第四种变换是切变,即对X和Y轴进行旋转,使X轴和Y轴不再互相垂直。切变变换由javafx.scene.transform.Shear类表示。在创建Shear类的对象时,要指定变换的起始点和在X和Y轴上的切变系数。
当需要进行变换时,可以通过Node类的getTransforms方法获取该对象上的已有的变换的集合,再向该集合中添加新的变换对象即可。代码清单5-17给出了一个对矩形进行四种变换的示例。
代码清单5-17 对矩阵进行变换的示例
Rectangle rect=new Rectangle(200,100);
rect.getTransforms().add(new Translate(100,50));
rect.getTransforms().add(new Rotate(30,100,50));
rect.getTransforms().add(new Scale(2,1.5));
rect.getTransforms().add(new Shear(0.5,0));