JavaFX - 二維圖形



在上一章中,我們學習了 JavaFX 的基本應用,瞭解瞭如何建立一個空視窗以及如何在 JavaFX 的 XY 平面上繪製一條直線。除了直線,我們還可以繪製其他幾種二維圖形。

二維圖形

一般來說,二維圖形是在 XY 平面上繪製的幾何圖形,包括直線、矩形、圓形等。

使用 JavaFX 庫,您可以繪製:

  • 預定義圖形,例如直線、矩形、圓形、橢圓、多邊形、折線、三次貝塞爾曲線、二次貝塞爾曲線、弧形。

  • 路徑元素,例如 MoveTO 路徑元素、直線、水平線、垂直線、三次貝塞爾曲線、二次貝塞爾曲線、弧形。

  • 除此之外,您還可以透過解析 SVG 路徑來繪製二維圖形。

上述每個二維圖形都由一個類表示,所有這些類都屬於包 **javafx.scene.shape**。名為 **Shape** 的類是 JavaFX 中所有二維圖形的基類。

在 JavaFX 中建立二維圖形

要建立圖表,您需要:

  • 例項化所需圖形的相應類。
  • 設定圖形的屬性。
  • 將圖形物件新增到組中。

例項化相應類

要建立二維圖形,首先需要例項化其相應的類。例如,如果要建立一個圓形,需要如下例項化名為 Circle 的類:

Circle circle = new Circle();

設定圖形的屬性

例項化類之後,需要使用 setter 方法為圖形設定屬性。例如,可以使用以下 setter 方法設定 Circle 類中心的 X、Y 座標及其半徑:

// Setting the Properties of a circle
circle.setCenterX(300.0f); 
circle.setCenterY(135.0f); 
circle.setRadius(100.0f);        

將圖形物件新增到組中

最後,需要將圓形物件作為建構函式的引數傳遞給組,如下所示。

//Creating a Group object  
Group root = new Group(circle);

JavaFX 中提供的各種二維圖形

下表列出了 JavaFX 提供的各種圖形(類)。

序號 圖形和描述
1 直線

直線是連線兩點的幾何結構。包 **javafx.scene.shape** 的 **Line** 類表示 XY 平面上的直線。

2 矩形

一般來說,矩形是一個四邊形,它有兩對平行且相交的邊,所有內角都是直角。在 JavaFX 中,矩形由名為 **Rectangle** 的類表示。此類屬於包 **javafx.scene.shape**。

3 圓角矩形

在 JavaFX 中,您可以繪製具有尖銳邊緣或圓弧邊緣的矩形,具有圓弧邊緣的矩形稱為圓角矩形。

4 圓形

圓形是由一條形成閉合環路的線構成的,環路上的每個點與中心點的距離都相同。在 JavaFX 中,圓形由名為 **Circle** 的類表示。此類屬於包 **javafx.scene.shape**。

5 橢圓

橢圓由兩點定義,每個點稱為焦點。如果取橢圓上的任意一點,則到焦點點的距離之和為常數。橢圓的大小由這兩個距離之和決定。

在 JavaFX 中,橢圓由名為 **Ellipse** 的類表示。此類屬於包 **javafx.scene.shape**。

6 多邊形

由多個共面的線段首尾相連形成的閉合圖形。在 JavaFX 中,多邊形由名為 **Polygon** 的類表示。此類屬於包 **javafx.scene.shape**。

7 折線

折線與多邊形相同,只是折線末端不閉合。或者,是由一個或多個線段組成的連續線。在 JavaFX 中,折線由名為 **Polyline** 的類表示。此類屬於包 **javafx.scene.shape**。

8 三次貝塞爾曲線

三次貝塞爾曲線是 XY 平面上的三次貝塞爾引數曲線。在 JavaFX 中,三次貝塞爾曲線由名為 **CubicCurve** 的類表示。此類屬於包 **javafx.scene.shape**。

9 二次貝塞爾曲線

二次貝塞爾曲線是 XY 平面上的二次貝塞爾引數曲線。在 JavaFX 中,二次貝塞爾曲線由名為 **QuadCurve** 的類表示。此類屬於包 **javafx.scene.shape**。

10 弧形

弧形是曲線的一部分。在 JavaFX 中,弧形由名為 **Arc** 的類表示。此類屬於包 **javafx.scene.shape**。

弧形的型別

除此之外,我們還可以繪製三種類型的弧形:**開放型、弦形、圓形**。

11 SVGPath

在 JavaFX 中,我們可以透過解析 SVG 路徑來構建影像。此類圖形由名為 **SVGPath** 的類表示。此類屬於包 **javafx.scene.shape**。此類具有名為 **content** 的字串型別屬性。它表示應從中繪製圖像的 SVG 路徑編碼字串。

二維物件的屬性

對於所有二維物件,您可以設定各種屬性,例如填充、描邊、StrokeType 等。以下部分討論二維物件的各種屬性。

我們將在本教程的後續部分詳細學習這些屬性。

二維物件的運算

如果我們將多個圖形新增到一個組中,則第一個圖形將被第二個圖形重疊,如下所示。

Operations On 2D Objects

除了變換(旋轉、縮放、平移等)、轉換(動畫)之外,您還可以對二維物件執行三種運算,即:**並集、差集**和**交集**。

  • **並集運算:**此運算將兩個或多個圖形作為輸入,並返回它們佔據的區域。

  • 交集運算:此運算以兩個或多個形狀作為輸入,並返回它們之間的交集區域。

  • 減法運算:此運算以兩個或多個形狀作為輸入。然後,它返回第一個形狀的面積,但不包括與第二個形狀重疊的面積。

廣告