Javafx 简明教程
JavaFX - Drawing a Quad Curve
从数学上讲,二次曲线是一个由二次函数描述的曲线,例如 y = ax2 + bx + c。
计算机图形中使用贝塞尔曲线。这些是参数曲线,在所有尺度下都显得相当平滑。这些贝塞尔曲线基于 XY 平面上的点绘制。
二次曲线是 XY 平面上的贝塞尔参数曲线,是 2 度曲线。使用三个点绘制: start point, end point 和 control point ,如下图所示:
Quad Curve in JavaFX
在 JavaFX 中,Quad 曲线由名为 QuadCurve 的类表示。此类属于 javafx.scene.shape 包。
通过实例化此类,你可以在 JavaFX 中创建一个 QuadCurve 节点。
此类有 6 个 double 数据类型的属性,即 −
-
startX − 曲线起点的 x 坐标。
-
startY − 曲线起点的 y 坐标。
-
controlX − 曲线控制点的 x 坐标。
-
controlY − 曲线控制点的 y 坐标。
-
endX − 曲线终点的 x 坐标。
-
endY − 曲线终点的 y 坐标。
要绘制 Quad 曲线,你需要向这些属性传递值。这可以通过在实例化时按相同顺序将它们传递给此类的构造函数,或者通过使用合适的 setter 方法来完成。
Steps to Draw Quad Curve
要使用 JavaFX 绘制贝塞尔四边形曲线,请执行以下步骤。
Step 1: Creating a Quad Curve
你可以通过实例化属于包 javafx.scene.shape 的名为 QuadCurve 的类来在 JavaFX 中创建一个 Quad 曲线。然后,你可以在 Application 类的 start() 方法中实例化此类,如下面的代码块所示。
public class ClassName extends Application {
public void start(Stage primaryStage) throws Exception {
//Creating an object of the class QuadCurve
QuadCurve quadcurve = new QuadCurve();
}
}
Step 2: Setting Properties to the Quad Curve
使用各自的 setter 方法指定所需曲线的三个点的 x、y 坐标:起始点、结束点和控制点,如下面的代码块所示。
//Adding properties to the Quad Curve
quadCurve.setStartX(100.0);
quadCurve.setStartY(220.0f);
quadCurve.setEndX(500.0f);
quadCurve.setEndY(220.0f);
quadCurve.setControlX(250.0f);
quadCurve.setControlY(0.0f);
或者,通过使用各自的 setter 方法,如下所示:
QuadCurve quadcurve = new QuadCurve(startX, startY, controlX, controlY, endX, endY);
Step 3: Adding Quad Curve Object to Group
在 start() 方法中,通过将之前创建的 QuadCurve 对象作为其构造函数的参数值来实例化 Group 类:
Group root = new Group(quadcurve);
Step 4: Launching Application
创建二维对象后,请按照下面给出的步骤正确启动应用程序:
-
首先,通过将组对象作为其构造函数的参数值传递来实例化名为 Scene 的类。你也可以将应用程序屏幕的尺寸作为可选参数传递给此构造函数。
-
然后,使用 Stage 类的 setTitle() 方法设置阶段标题。
-
现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。
-
使用名为 show() 的方法显示场景的内容。
-
最后,借助 launch() 方法启动应用程序。
Example
下面是一个使用 JavaFX 生成四边形曲线的程序。将此代码保存在一个名为 QuadCurveExample.java. 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.QuadCurve;
public class QuadCurveExample extends Application {
@Override
public void start(Stage stage) {
//Creating a QuadCurve
QuadCurve quadCurve = new QuadCurve();
//Adding properties to the Quad Curve
quadCurve.setStartX(100.0);
quadCurve.setStartY(220.0f);
quadCurve.setEndX(500.0f);
quadCurve.setEndY(220.0f);
quadCurve.setControlX(250.0f);
quadCurve.setControlY(0.0f);
//Creating a Group object
Group root = new Group(quadCurve);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Drawing a Quad curve");
//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 文件。
javac --module-path %PATH_TO_FX% --add-modules javafx.controls QuadCurveExample.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls QuadCurveExample
在执行过程中,以上程序生成一个显示一个贝塞尔四边形曲线的 JavaFX 窗口,如下面的屏幕截图所示。
Example
现在,您还可以通过应用任何效果(例如绽放效果)来绘制此四边形曲线,如下面的示例所示。将代码保存在名为 QuadCurveEffect.java 的文件中。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.Bloom;
import javafx.stage.Stage;
import javafx.scene.paint.Color;
import javafx.scene.shape.QuadCurve;
public class QuadCurveEffect extends Application {
@Override
public void start(Stage stage) {
//Creating a QuadCurve
QuadCurve quadCurve = new QuadCurve();
//Adding properties to the Quad Curve
quadCurve.setStartX(100.0);
quadCurve.setStartY(220.0f);
quadCurve.setEndX(300.0f);
quadCurve.setEndY(220.0f);
quadCurve.setControlX(250.0f);
quadCurve.setControlY(0.0f);
quadCurve.setFill(Color.RED);
//Instantiating the Bloom class
Bloom bloom = new Bloom();
//setting threshold for bloom
bloom.setThreshold(0.1);
//Applying bloom effect to quadCurve
quadCurve.setEffect(bloom);
//Creating a Group object
Group root = new Group(quadCurve);
//Creating a scene object
Scene scene = new Scene(root, 400, 300);
//Setting title to the Stage
stage.setTitle("Drawing a Quad curve");
//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 文件。
javac --module-path %PATH_TO_FX% --add-modules javafx.controls QuadCurveEffect.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls QuadCurveEffect
在执行过程中,以上程序生成一个显示一个贝塞尔四边形曲线的 JavaFX 窗口,如下面的屏幕截图所示。