
- JavaFX 教程
- JavaFX - 首頁
- JavaFX - 概述
- JavaFX 安裝和架構
- JavaFX - 環境
- JavaFX - 使用 Netbeans 安裝
- JavaFX - 使用 Eclipse 安裝
- JavaFX - 使用 Visual Studio Code 安裝
- JavaFX - 架構
- JavaFX - 應用程式
- JavaFX 二維形狀
- JavaFX - 二維形狀
- JavaFX - 繪製直線
- JavaFX - 繪製矩形
- JavaFX - 繪製圓角矩形
- JavaFX - 繪製圓形
- JavaFX - 繪製橢圓
- JavaFX - 繪製多邊形
- JavaFX - 繪製折線
- JavaFX - 繪製三次貝塞爾曲線
- JavaFX - 繪製二次貝塞爾曲線
- JavaFX - 繪製弧線
- JavaFX - 繪製 SVG 路徑
- JavaFX 二維物件的屬性
- JavaFX - 描邊型別屬性
- JavaFX - 描邊寬度屬性
- JavaFX - 描邊填充屬性
- JavaFX - 描邊屬性
- JavaFX - 描邊連線屬性
- JavaFX - 描邊斜接限制屬性
- JavaFX - 描邊端點屬性
- JavaFX - 平滑屬性
- JavaFX 路徑物件
- JavaFX - 路徑物件
- JavaFX - LineTo 路徑物件
- JavaFX - HLineTo 路徑物件
- JavaFX - VLineTo 路徑物件
- JavaFX - 二次貝塞爾曲線 Path 物件
- JavaFX - CubicCurveTo 路徑物件
- JavaFX - ArcTo 路徑物件
- JavaFX 顏色和紋理
- JavaFX - 顏色
- JavaFX - 線性漸變圖案
- JavaFX - 徑向漸變圖案
- JavaFX 文字
- JavaFX - 文字
- JavaFX 效果
- JavaFX - 效果
- JavaFX - 顏色調整效果
- JavaFX - 顏色輸入效果
- JavaFX - 圖片輸入效果
- JavaFX - 混合效果
- JavaFX - 光暈效果
- JavaFX - 輝光效果
- JavaFX - 方框模糊效果
- JavaFX - 高斯模糊效果
- JavaFX - 運動模糊效果
- JavaFX - 反射效果
- JavaFX - 棕褐色效果
- JavaFX - 陰影效果
- JavaFX - 投影陰影效果
- JavaFX - 內陰影效果
- JavaFX - 照明效果
- JavaFX - 遠光源效果
- JavaFX - 聚光燈效果
- JavaFX - 點光源效果
- JavaFX - 位移貼圖
- JavaFX - 透視變換
- JavaFX 動畫
- JavaFX - 動畫
- JavaFX - 旋轉動畫
- JavaFX - 縮放動畫
- JavaFX - 平移動畫
- JavaFX - 淡入淡出動畫
- JavaFX - 填充動畫
- JavaFX - 描邊動畫
- JavaFX - 順序動畫
- JavaFX - 並行動畫
- JavaFX - 暫停動畫
- JavaFX - 路徑動畫
- JavaFX 圖片
- JavaFX - 圖片
- JavaFX 三維形狀
- JavaFX - 三維形狀
- JavaFX - 建立長方體
- JavaFX - 建立圓柱體
- JavaFX - 建立球體
- JavaFX 事件處理
- JavaFX - 事件處理
- JavaFX - 使用便捷方法
- JavaFX - 事件過濾器
- JavaFX - 事件處理器
- JavaFX UI 控制元件
- JavaFX - UI 控制元件
- JavaFX - 列表檢視
- JavaFX - 手風琴
- JavaFX - 按鈕欄
- JavaFX - 選擇框
- JavaFX - HTML 編輯器
- JavaFX - 選單欄
- JavaFX - 分頁
- JavaFX - 進度指示器
- JavaFX - 滾動窗格
- JavaFX - 分隔符
- JavaFX - 滑塊
- JavaFX - 微調器
- JavaFX - 分割窗格
- JavaFX - 表格檢視
- JavaFX - 標籤頁窗格
- JavaFX - 工具欄
- JavaFX - 樹檢視
- JavaFX - 標籤
- JavaFX - 複選框
- JavaFX - 單選按鈕
- JavaFX - 文字欄位
- JavaFX - 密碼欄位
- JavaFX - 檔案選擇器
- JavaFX - 超連結
- JavaFX - 工具提示
- JavaFX - 警報框
- JavaFX - 日期選擇器
- JavaFX - 文字區域
- JavaFX 圖表
- JavaFX - 圖表
- JavaFX - 建立餅圖
- JavaFX - 建立折線圖
- JavaFX - 建立面積圖
- JavaFX - 建立條形圖
- JavaFX - 建立氣泡圖
- JavaFX - 建立散點圖
- JavaFX - 建立堆疊面積圖
- JavaFX - 建立堆疊條形圖
- JavaFX 佈局面板
- JavaFX - 佈局面板
- JavaFX - HBox 佈局
- JavaFX - VBox 佈局
- JavaFX - BorderPane 佈局
- JavaFX - StackPane 佈局
- JavaFX - TextFlow 佈局
- JavaFX - AnchorPane 佈局
- JavaFX - TilePane 佈局
- JavaFX - GridPane 佈局
- JavaFX - FlowPane 佈局
- JavaFX CSS
- JavaFX - CSS
- JavaFX 多媒體
- JavaFX - 處理多媒體
- JavaFX - 播放影片
- JavaFX 有用資源
- JavaFX - 快速指南
- JavaFX - 有用資源
- JavaFX - 討論
JavaFX - 二次貝塞爾曲線 Path 物件
二次曲線或二次貝塞爾曲線通常定義為由二次方程定義的曲線。在 JavaFX 中,我們使用 6 個不同的屬性來建立此二次貝塞爾曲線節點。為了使用二次貝塞爾曲線建立複雜的形狀,每次需要時都必須指定這些屬性。
JavaFX 透過提供一個只需要較少屬性即可繪製二次貝塞爾曲線的 Path 物件,簡化了此過程。
我們將在本章後面詳細瞭解二次貝塞爾曲線 Path 物件。
二次貝塞爾曲線 Path 物件
路徑元素二次曲線用於從當前位置到指定座標中的某個點繪製**二次曲線**。
它由名為**QuadraticCurveTo**的類表示。此類屬於包**javafx.scene.shape**。
此類具有 4 個雙精度資料型別屬性,即:
**setX** - 從當前位置繪製曲線的點的 x 座標。
**setY** - 從當前位置繪製曲線的點的 y 座標。
**controlX** - 曲線控制點的 x 座標。
**controlY** - 曲線控制點的 y 座標。
要繪製二次曲線,您需要向這些屬性傳遞值。這可以透過在例項化時按相同的順序將它們傳遞給此類的建構函式來完成;或者,透過使用它們各自的 setter 方法。
繪製 PathElement 二次貝塞爾曲線的步驟
要在 JavaFX 中從當前位置到指定點繪製二次貝塞爾曲線,請按照以下步驟操作。
步驟 1:建立 Path 物件
例項化 Path 類以在 Application 類的 start() 方法中建立一個 Path 物件,如下所示:
public class ClassName extends Application { @Override public void start(Stage primaryStage) throws Exception { //Creating a Path object Path path = new Path(); } }
步驟 2:建立 Path
建立**MoveTo**路徑元素並將 XY 座標設定為線的起點座標 (100, 150)。這可以透過使用**MoveTo**類的**setX()**和**setY()**方法來完成,如下所示。
//Moving to the starting point MoveTo moveTo = new MoveTo(); moveTo.setX(100.0f); moveTo.setY(150.0f);
步驟 3:建立 QuadraticCurveTo 類的物件
透過例項化名為**QuadCurveTo**的類(屬於包**javafx.scene.shape**)來建立路徑元素二次曲線,如下所示。
//Creating an object of the class QuadCurveTo QuadCurveTo quadCurveTo = new QuadCurveTo()
步驟 4:將屬性設定為二次曲線元素
指定從當前位置繪製二次貝塞爾曲線的點的座標。然後,您應該透過它們的 setter 方法設定屬性 x、y、controlx、controlY 和控制點的座標,如下所示。
//Setting properties of the class QuadCurve quadCurveTo.setX(500.0f); quadCurveTo.setY(220.0f); quadCurveTo.setControlX(250.0f); quadCurveTo.setControlY(0.0f);
步驟 5:將元素新增到 Path 類的 ObservableList
將前面步驟中建立的**MoveTo**和**QuadraticCurveTo**路徑元素新增到**Path**類的可觀察列表中,如下所示:
//Adding the path elements to Observable list of the Path class path.getElements().add(moveTo); path.getElements().add(quadCurveTo)
步驟 6:啟動應用程式
建立 QuadCurveTo 路徑物件後,請按照以下步驟正確啟動應用程式:
首先,透過將 Group 物件作為引數值傳遞給其建構函式來例項化名為**Scene**的類。對於此建構函式,您還可以將應用程式螢幕的尺寸作為可選引數傳遞。
然後,使用**Stage**類的**setTitle()**方法設定階段的標題。
現在,使用名為**Stage**的類的**setScene()**方法將 Scene 物件新增到階段。
使用名為**show()**的方法顯示場景的內容。
最後,在**launch()**方法的幫助下啟動應用程式。
示例 1
以下程式使用 JavaFX 的名為**Path**的類從當前點到指定位置繪製二次貝塞爾曲線。將此程式碼儲存在名為**QuadCurveToExample.java**的檔案中。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.QuadCurveTo; public class QuadCurveToExample extends Application { @Override public void start(Stage stage) { //Creating an object of the class named Path Path path = new Path(); //Moving to the starting point MoveTo moveTo = new MoveTo(); moveTo.setX(100.0); moveTo.setY(150.0); //Instantiating the class QuadCurve QuadCurveTo quadCurveTo = new QuadCurveTo(); //Setting properties of the class QuadCurve quadCurveTo.setX(500.0f); quadCurveTo.setY(220.0f); quadCurveTo.setControlX(250.0f); quadCurveTo.setControlY(0.0f); //Adding the path elements to Observable list of the Path class path.getElements().add(moveTo); path.getElements().add(quadCurveTo); //Creating a Group object Group root = new Group(path); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Drawing a QuadCurve through a specified path"); //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 QuadCurveToExample.java java --module-path %PATH_TO_FX% --add-modules javafx.controls QuadCurveToExample
輸出
執行上述程式後,將生成一個 JavaFX 視窗,其中顯示一條二次貝塞爾曲線。該曲線從當前位置繪製到指定點,如下所示。

示例 2
在此示例中,讓我們嘗試為此二次貝塞爾曲線 Path 應用一些動畫。在這裡,我們繪製一個示例二次貝塞爾曲線併為其應用淡入淡出動畫。將此程式碼儲存在名為**QuadCurveToAnimation.java**的檔案中。
import javafx.application.Application; import javafx.animation.FadeTransition; import javafx.scene.Group; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.shape.QuadCurveTo; import javafx.util.Duration; public class QuadCurveToAnimation extends Application { @Override public void start(Stage stage) { //Creating an object of the class named Path Path path = new Path(); //Moving to the starting point MoveTo moveTo = new MoveTo(); moveTo.setX(100.0); moveTo.setY(150.0); //Instantiating the class QuadCurve QuadCurveTo quadCurveTo = new QuadCurveTo(); //Setting properties of the class QuadCurve quadCurveTo.setX(500.0f); quadCurveTo.setY(220.0f); quadCurveTo.setControlX(250.0f); quadCurveTo.setControlY(0.0f); //Adding the path elements to Observable list of the Path class path.getElements().add(moveTo); path.getElements().add(quadCurveTo); //Creating the fade Transition FadeTransition fadeTransition = new FadeTransition(); fadeTransition.setDuration(Duration.millis(1000)); //Setting the node for Transition fadeTransition.setNode(path); //Setting the property fromValue of the transition (opacity) fadeTransition.setFromValue(1.0); //Setting the property toValue of the transition (opacity) fadeTransition.setToValue(0.3); //Setting the cycle count for the transition fadeTransition.setCycleCount(50); //Setting auto reverse value to false fadeTransition.setAutoReverse(false); //Playing the animation fadeTransition.play(); //Creating a Group object Group root = new Group(path); //Creating a scene object Scene scene = new Scene(root, 600, 300); //Setting title to the Stage stage.setTitle("Drawing a QuadCurve through a specified path"); //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 QuadCurveToAnimation.java java --module-path %PATH_TO_FX% --add-modules javafx.controls QuadCurveToAnimation
輸出
執行上述程式後,將生成一個 JavaFX 視窗,其中顯示一條逐漸淡出的二次貝塞爾曲線。該曲線從當前位置繪製到指定點,如下所示。
