W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
為了在JavaFX場景上渲染圖形,我們需要基本的形狀和顏色。
Node
類是所有JavaFX場景圖形節(jié)點的基本基類。它提供了轉換,翻譯和應用效果到任何節(jié)點的能力。
javafx.scene.shape.Shape
類是 Node
類的后代。
所有較舊的JavaFX 2.x Builder類在JavaFX 8中已棄用。
當在JavaFX場景圖形上繪制時,使用屏幕坐標空間(系統(tǒng))渲染線。
屏幕坐標系將(0,0)放在左上角。
x坐標沿x軸移動點。從上到下移動點時,y坐標值增加。
下圖顯示了右側的屏幕坐標系。
在JavaFX中,場景圖形對象(如線,圓和矩形)是Shape
類的派生類。
所有形狀對象可以在兩個成形區(qū)域之間執(zhí)行幾何操作,例如減法,相交和并集。
要在JavaFX中繪制線條,我們將使用 javafx.scene.shape.Line
類。
要創(chuàng)建一個 Line
對象,我們需要指定一個開始(x,y)坐標和結束坐標。
創(chuàng)建線節(jié)點時,有兩種方法來設置起點和終點。
第一種方法使用具有參數(shù)startX,startY,endX和endY的構造函數(shù)所有參數(shù)的數(shù)據(jù)類型為 double
。
以下代碼使用構造函數(shù)創(chuàng)建具有起點(100,10)和終點(10,110)的線。
Line line = new Line(100, 10, 10, 110);
創(chuàng)建行節(jié)點的第二種方法是使用空構造函數(shù)來實例化 Line
類,然后使用setter方法設置每個屬性。
以下代碼顯示如何創(chuàng)建線對象和使用setter方法設置行的起點和終點。
Line line = new Line(); line.setStartX(100); line.setStartY(10); line.setEndX(10); line.setEndY(110);
在場景圖上繪制的線節(jié)點默認為1.0的筆觸寬度和黑色的筆觸顏色。
所有形狀的筆觸顏色都為null,這意味著除了Line,Polyline和Path節(jié)點之外沒有顏色。
要創(chuàng)建不同種類的線,我們可以設置屬性繼承自父類 javafx.scene.shape.Shape
的屬性。
下表顯示了我們可以在一行上設置的屬性。
要檢索或修改每個屬性,您將使用其適當?shù)膅etter和setter方法。
屬性 | 數(shù)據(jù)類型 / 說明 |
---|---|
fill | javafx.scene.paint.Paint 用于填充形狀內(nèi)的顏色。 |
smooth | Boolean True表示打開反鋸齒,false表示關閉反鋸齒。 |
strokeDashOffset | Double 將距離設置為虛線圖案。 |
strokeLineCap | javafx.scene.shape.StrokeLineCap 在線或路徑的末尾設置帽樣式。有三種樣式:
|
strokeLineJoin | javafx.scene.shape.StrokeLineJoin 當線相遇時設置裝飾。有三種類型:
|
strokeMiterLimit | Double 設置斜角接縫的限制以及斜角接縫裝飾StrokeLineJoin.MITER。 |
stroke | javafx.scene.paint.Paint 設置形狀的筆劃線的顏色。 |
strokeType | javafx.scene.shape.StrokeType 設置在Shape節(jié)點的邊界周圍繪制描邊的位置。有三種類型:
|
strokeWidth | Double 設置線的寬度。 |
以下代碼創(chuàng)建一個Line對象,并使用setter方法設置開始和結束坐標。
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.VBox; import javafx.scene.shape.Line; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { VBox box = new VBox(); final Scene scene = new Scene(box,300, 250); scene.setFill(null); Line line = new Line(); line.setStartX(0.0f); line.setStartY(0.0f); line.setEndX(100.0f); line.setEndY(100.0f); box.getChildren().add(line); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代碼生成以下結果。
以下代碼設置更多的線屬性,包括筆觸顏色,筆觸寬度和線帽。
之后,它還設置了線的破折號樣式。
import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.paint.Color; import javafx.scene.shape.Line; import javafx.scene.shape.StrokeLineCap; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) { primaryStage.setTitle("Drawing Lines"); Group root = new Group(); Scene scene = new Scene(root, 300, 150, Color.GRAY); Line redLine = new Line(10, 10, 200, 10); redLine.setStroke(Color.RED); redLine.setStrokeWidth(10); redLine.setStrokeLineCap(StrokeLineCap.BUTT); redLine.getStrokeDashArray().addAll(15d, 5d, 15d, 15d, 20d); redLine.setStrokeDashOffset(10); root.getChildren().add(redLine); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
上面的代碼生成以下結果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: