JavaFX Scale类
缩放是一种用于改变对象大小的变换。它可以扩展对象的大小或压缩对象的大小。可以通过将对象的坐标乘以一个称为比例因子的因子来更改大小。在 JavaFX 中,类javafx.scene.transform.Scale表示缩放变换。
在下图中,缩放变换应用于立方体以扩展其大小。
1 Scale类的属性
属性 | 描述 | setter方法 |
---|---|---|
pivotX | 它是一个双重类型的属性。它表示完成缩放的枢轴点的 x 坐标。 | setPivotX(double value) |
pivotY | 它是一个双重类型的属性。它表示完成缩放的枢轴点的 y 坐标。 | setPivotY(double value) |
pivotZ | 它是一个双重类型的属性。它表示完成缩放的枢轴点的 z 坐标。 | setPivotZ(double value) |
x | 它是一个双重类型的属性。它表示对象沿 X 轴缩放的系数。 | setX(double value) |
y | 它是一个双重类型的属性。它表示对象沿 Y 轴缩放的系数。 | setY(double value) |
z | 它是一个双重类型的属性。它表示对象沿 Z 轴缩放的系数。 | setZ(double value) |
2 Scale类的构造函数
该类包含下面给出的五个构造函数。
- public Scale() :使用默认参数创建新实例。
- public Scale(double X, double Y) :创建 2D Scale 的新实例。
- public Scale(double X, double Y, double Z) :创建 3D 比例的新实例。
- public Scale(double X, double Y, double pivotX, double pivotY) :使用指定的枢轴坐标创建二维比例的新实例。
- public Scale(double X, double Y, double Z, double pivotX, double pivotY, double pivotZ) :使用指定的枢轴坐标创建 3D Scale 的新实例。
3 Scale类的例子
以下示例说明了 Scaling 转换的实现。在这里,我们创建了两个具有相同尺寸和相同颜色的圆。缩放变换应用于第二个圆,使其在 XY 方向上都按因子 1.5 缩放。对第二个圆应用缩放变换后,它得到第一个圆的 1.5。
package com.yiidian;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
public class ScaleExample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
//Creating the two circles
Circle cir1=new Circle(230,200,100);
Circle cir2=new Circle(550,200,100);
//setting the color and stroke for the circles
cir1.setFill(Color.YELLOW);
cir1.setStroke(Color.BLACK);
cir2.setFill(Color.YELLOW);
cir2.setStroke(Color.BLACK);
// creating the text nodes for the identification
Text text1 = new Text("Original Circle");
Text text2 = new Text("Scaled with factor 1.5 in XY");
//setting the properties for the text nodes
text1.setX(150);
text1.setY(400);
text2.setX(400);
text2.setY(400);
text1.setFont(Font.font("calibri", FontWeight.BLACK, FontPosture.ITALIC,20));
text2.setFont(Font.font("calibri",FontWeight.BLACK,FontPosture.ITALIC,20));
//creating a 2D scale
Scale scale = new Scale();
// setting the X-y factors for the scale
scale.setX(1.5);
scale.setY(1.5);
//setting the pivot points along which the scaling is done
scale.setPivotX(550);
scale.setPivotY(200);
//applying transformations on the 2nd circle
cir2.getTransforms().add(scale);
Group root = new Group();
root.getChildren().addAll(cir1,cir2,text1,text2);
Scene scene = new Scene(root,800,450);
primaryStage.setScene(scene);
primaryStage.setTitle("一点教程网:Scale Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
输出结果为:
热门文章
优秀文章