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类的构造函数

该类包含下面给出的五个构造函数。

  1. public Sc​​ale() :使用默认参数创建新实例。
  2. public Sc​​ale(double X, double Y) :创建 2D Scale 的新实例。
  3. public Sc​​ale(double X, double Y, double Z) :创建 3D 比例的新实例。
  4. public Sc​​ale(double X, double Y, double pivotX, double pivotY) :使用指定的枢轴坐标创建二维比例的新实例。
  5. public Sc​​ale(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);
    }
}  

输出结果为:

热门文章

优秀文章