Javafx 简明教程
JavaFX - Scaling Transformation
在缩放变换过程中,可以扩展或压缩对象的大小。可以通过将对象的原始坐标乘以缩放因子来实现缩放,以获得所需的结果。
In the scaling transformation process, you either expand or compress the dimensions of the object. Scaling can be achieved by multiplying the original coordinates of the object with the scaling factor to get the desired result.
Scaling Transformation in JavaFX
在 JavaFX 中,缩放变换用于更改对象的大小。这是通过在 javafx.scene.transform 包中使用 Scale 类来应用的。Scale 类表示一个保持原始节点点、线和并行的仿射对象。此对象通过一定的因子缩放坐标。
In JavaFX, scaling transformation is used to change the size of an object. This is applied using the Scale class in the javafx.scene.transform package. The Scale class represents an Affine object that preserves the original nodes points, lines and parallelism. This object scales coordinates by certain factors.
让我们看一些示例,演示 JavaFX 中 2D 和 3D 对象中的缩放变换。
Let us see some examples demonstrating the scaling transformation in both 2D and 3D objects in JavaFX.
Example 1
以下是演示 JavaFX 中缩放的程序。在这里,我们在相同位置创建 2 个圆(节点),尺寸相同,但颜色不同(淡褐色和蓝色)。我们还对蓝色圆圈应用缩放变换。
Following is the program which demonstrates scaling in JavaFX. Here, we are creating 2 circles (nodes) at the same location with the same dimensions, but with different colors (Burlywood and Blue). We are also applying scaling transformation on the circle with a blue color.
将此代码保存在名为 ScalingExample.java 的文件中。
Save this code in a file with the name ScalingExample.java.
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.transform.Scale;
import javafx.stage.Stage;
public class ScalingExample extends Application {
@Override
public void start(Stage stage) {
//Drawing Circle1
Circle circle1 = new Circle(300, 135, 50);
//Setting the color of the circle
circle1.setFill(Color.BLUE);
//Setting the stroke width of the circle
circle1.setStrokeWidth(20);
//Drawing Circle2
Circle circle2 = new Circle(300, 135, 50);
//Setting the color of the circle
circle2.setFill(Color.BURLYWOOD);
//Setting the stroke width of the circle
circle2.setStrokeWidth(20);
//Creating the scale transformation
Scale scale = new Scale();
//Setting the dimensions for the transformation
scale.setX(1.5);
scale.setY(1.5);
//Setting the pivot point for the transformation
scale.setPivotX(300);
scale.setPivotY(135);
//Adding the scale transformation to circle1
circle1.getTransforms().addAll(scale);
//Creating a Group object
Group root = new Group(circle1, circle2);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Scaling transformation example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
使用以下命令,从命令提示符编译并执行已保存的 java 文件。
Compile and execute the saved java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls ScalingExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ScalingExample
执行后,上述程序会生成如下所示的 JavaFX 窗口。
On executing, the above program generates a JavaFX window as shown below.
Example 2
现在,让我们尝试对 3D 对象(比如球体)应用缩放变换。在这里,我们会尝试创建两个球体:一个保持其原始尺寸,另一个在应用缩放后改变尺寸。
Now, let us try to apply the scaling transformation on a 3D object, say a sphere. Here, we will try to create two spheres: one in its original size and another one resized after applying scaling.
将此代码保存在名为 ScalingExample3D.java 的文件中。
Save this code in a file with the name ScalingExample3D.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Scale;
import javafx.stage.Stage;
public class ScalingExample3D extends Application {
@Override
public void start(Stage stage) {
//Drawing Sphere1
Sphere sphere1 = new Sphere(100);
sphere1.setTranslateX(200);
sphere1.setTranslateY(150);
//Drawing Circle2
Sphere sphere2 = new Sphere(100);
sphere2.setTranslateX(200);
sphere2.setTranslateY(150);
//Creating the scale transformation
Scale scale = new Scale();
//Setting the dimensions for the transformation
scale.setX(0.5);
scale.setY(0.5);
//Setting the pivot point for the transformation
scale.setPivotX(300);
scale.setPivotY(150);
//Adding the scale transformation to circle1
sphere1.getTransforms().addAll(scale);
//Creating a Group object
Group root = new Group(sphere1, sphere2);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Scaling transformation example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
使用以下命令,从命令提示符编译并执行已保存的 java 文件。
Compile and execute the saved java file from the command prompt using the following commands.
javac --module-path %PATH_TO_FX% --add-modules javafx.controls ScalingExample3D.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls ScalingExample3D
执行后,上述程序会生成如下所示的 JavaFX 窗口。
On executing, the above program generates a JavaFX window as shown below.