JavaFX - 2D Shapes CubicCurve

Una curva cubica è descritta da una funzione polinomiale di terzo grado di due variabili e può essere scritta nella forma seguente:

Queste curve di Bézier sono generalmente utilizzate nella computer grafica. Sono curve parametriche che appaiono ragionevolmente morbide a tutte le scale. Queste curve vengono disegnate in base ai punti sul piano XY.

Una curva cubica è una curva parametrica di Bézier nel piano XY è una curva di grado 3. Viene disegnata utilizzando quattro punti: Start Point, End Point, Control Point and Control Point2 come mostrato nel diagramma seguente.

In JavaFX, un CubicCurve è rappresentato da una classe denominata CubicCurve. Questa classe appartiene al pacchettojavafx.scene.shape.

Istanziando questa classe, puoi creare un nodo CubicCurve in JavaFX.

Questa classe ha 8 proprietà del tipo di dati doppio, ovvero:

  • startX - La coordinata x del punto iniziale della curva.

  • startY - La coordinata y del punto iniziale della curva.

  • controlX1 - La coordinata x del primo punto di controllo della curva.

  • controlY1 - La coordinata y del primo punto di controllo della curva.

  • controlX2 - La coordinata x del secondo punto di controllo della curva.

  • controlY2 - La coordinata y del secondo punto di controllo della curva.

  • endX - La coordinata x del punto finale della curva.

  • endY - La coordinata y del punto finale della curva.

Per disegnare una curva cubica, è necessario passare valori a queste proprietà, passandoli al costruttore di questa classe, nello stesso ordine, al momento dell'istanziazione, come mostrato sotto

CubicCurve cubiccurve = new CubicCurve(
   startX, startY, controlX1, controlY1, controlX2, controlY2, endX, endY);

Oppure, utilizzando i rispettivi metodi setter come segue:

setStartX(value); 
setStartY(value); 
setControlX1(value); 
setControlY1(value); 
setControlX2(value); 
setControlY2(value); 
setEndX(value); 
setEndY(value);

Passaggi per disegnare CubicCurve

Per disegnare una curva cubica di Bézier in JavaFX, seguire i passaggi indicati di seguito.

Passaggio 1: creazione di una classe

Crea una classe Java ed eredita il file Application classe del pacchetto javafx.application e implementare il start() metodo di questa classe come segue.

public class ClassName extends Application {  
   @Override     
   public void start(Stage primaryStage) throws Exception {      
   }    
}

Passaggio 2: creazione di una curva cubica

È possibile creare un CubicCurve in JavaFX istanziando la classe denominata CubicCurve che appartiene a un pacchetto javafx.scene.shape. È possibile creare un'istanza di questa classe come segue.

//Creating an object of the class CubicCurve         
CubicCurve cubiccurve = new CubicCurve();

Passaggio 3: impostazione delle proprietà su CubicCurve

Specificare le coordinate x, y dei quattro punti: start point, end point, control point1 e control point2 della curva richiesta, utilizzando i rispettivi metodi setter come mostrato nel seguente blocco di codice.

//Setting properties to cubic curve 
cubicCurve.setStartX(100.0f); 
cubicCurve.setStartY(150.0f); 
cubicCurve.setControlX1(400.0f); 
cubicCurve.setControlY1(40.0f); 
cubicCurve.setControlX2(175.0f); 
cubicCurve.setControlY2(250.0f); 
cubicCurve.setEndX(500.0f); 
cubicCurve.setEndY(150.0f);

Passaggio 4: creazione di un oggetto gruppo

Nel start() metodo, creare un oggetto gruppo istanziando la classe denominata Group, che appartiene al pacchetto javafx.scene.

Passare l'oggetto CubicCurve (nodo) creato nel passaggio precedente come parametro al costruttore della classe Group per aggiungerlo al gruppo come segue:

Group root = new Group(cubiccurve);

Passaggio 5: creazione di un oggetto scena

Crea una scena istanziando la classe denominata Scene che appartiene al pacchetto javafx.scene. A questa classe passa l'oggetto Group(root) creato nel passaggio precedente.

Oltre all'oggetto radice, puoi anche passare due parametri doppi che rappresentano l'altezza e la larghezza dello schermo insieme all'oggetto della classe Group come segue.

Scene scene = new Scene(group ,600, 300);

Passaggio 6: impostazione del titolo dello stage

Puoi impostare il titolo dello stage utilizzando il file setTitle() metodo del Stageclasse. IlprimaryStage è un oggetto Stage che viene passato al metodo di avvio della classe scene come parametro.

Usando il primaryStage oggetto, imposta il titolo della scena come Sample Application come segue.

primaryStage.setTitle("Sample Application");

Passaggio 7: aggiunta della scena allo stage

Puoi aggiungere un oggetto Scene allo stage utilizzando il metodo setScene() della classe denominata Stage. Aggiungere l'oggetto Scene preparato nei passaggi precedenti utilizzando questo metodo come segue.

primaryStage.setScene(scene)

Passaggio 8: visualizzazione dei contenuti dello stage

Visualizza il contenuto della scena utilizzando il metodo denominato show() del Stage classe come segue.

Passaggio 9: avvio dell'applicazione

Avvia l'applicazione JavaFX chiamando il metodo statico launch() del Application class dal metodo principale come segue.

public static void main(String args[]){   
   launch(args);      
}

Esempio

Di seguito è riportato un programma che genera una curva cubica di Bezier utilizzando JavaFX. Salva questo codice in un file con il nomeCubicCurveExample.java.

import javafx.application.Application; 
import javafx.scene.Group; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.scene.shape.CubicCurve; 
         
public class CubicCurveExample extends Application {  
   @Override 
   public void start(Stage stage) { 
      //Drawing a cubic curve 
      CubicCurve cubicCurve = new CubicCurve(); 
       
      //Setting properties to cubic curve
      cubicCurve.setStartX(100.0f); 
      cubicCurve.setStartY(150.0f); 
      cubicCurve.setControlX1(400.0f); 
      cubicCurve.setControlY1(40.0f); 
      cubicCurve.setControlX2(175.0f); 
      cubicCurve.setControlY2(250.0f); 
      cubicCurve.setEndX(500.0f); 
      cubicCurve.setEndY(150.0f);      
         
      //Creating a Group object  
      Group root = new Group(cubicCurve); 
         
      //Creating a scene object 
      Scene scene = new Scene(root, 600, 300);  
      
      //Setting title to the Stage 
      stage.setTitle("Drawing a cubic 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); 
   } 
}

Compilare ed eseguire il file java salvato dal prompt dei comandi utilizzando i seguenti comandi.

javac CubicCurveExample.java 
java CubicCurveExample

All'esecuzione, il programma precedente genera una finestra JavaFX che mostra una curva cubica di Bézier come mostrato di seguito.