Javafx-2dshapes-cubiccurveto

提供:Dev Guides
移動先:案内検索

2Dシェイプパス要素のキュービックカーブ

パス要素の3次曲線は、現在の位置から指定された座標内の点に* 3次曲線*を描くために使用されます。

*CubicCurveTo* という名前のクラスで表されます。 このクラスは、パッケージ *javafx.scene.shape* に属します。

このクラスには、doubleデータ型の6つのプロパティがあります-

  • setX -現在の位置から曲線が描画されるポイントのx座標。
  • setX -現在の位置から曲線が描画されるポイントのy座標。
  • controlX1 -曲線の1 ^ st ^制御点のx座標。
  • controlY1 -曲線の1 ^ st ^制御点のy座標。
  • controlX2 -曲線の2 ^ nd ^制御点のx座標。
  • controlY2 -曲線の2 ^ nd ^制御点のy座標。

3次曲線を描くには、これらのプロパティに値を渡す必要があります。 これは、これらをこのクラスのコンストラクターに渡すことで実行できます。 これらは、以下に示すように、インスタンス化の時点と同じ順序である必要があります-

CubicCurveTo cubiccurve = new CubicCurveTo(
   X, Y, controlX1, controlY1, controlX2, controlY2);

または、以下に示すように、それぞれのセッターメソッドを使用して-

setX(value);
setY(value);
setControlX1(value);
setControlY1(value);
setControlX2(value);
setControlY2(value);

PathElement Cubic Curveを描画する手順

JavaFXで現在の位置から指定されたポイントに3次曲線を描くには、以下の手順に従います。

ステップ1:クラスを作成する

Javaクラスを作成し、パッケージ javafx.applicationApplication クラスを継承します。 次に、以下に示すように、このクラスの* start()*メソッドを実装できます。

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

ステップ2:パスクラスオブジェクトを作成する

次のコードブロックに示すように、パスクラスオブジェクトを作成します。

//Creating a Path object
Path path = new Path();

ステップ3:パスを作成する

*MoveTo* パス要素を作成し、XY座標を線の始点に設定して座標(100、150)にします。 これは、以下に示すように、クラス *MoveTo* のメソッド* setX()*および* setY()*を使用して実行できます。
//Moving to the starting point
MoveTo moveTo = new MoveTo();
moveTo.setX(100.0f);
moveTo.setY(150.0f);

ステップ4:CubicCurveToクラスのオブジェクトの作成

以下に示すように、パッケージ javafx.scene.shape に属するCubicCurveToというクラスをインスタンス化して、パス要素の2次曲線を作成します-

//Creating an object of the class CubicCurveTo
CubicCurveTo cubicCurveTo= new CubicCurveTo ();

手順5:プロパティを3次曲線要素に設定する

現在の位置から3次曲線を描画するポイントの座標を指定します。 次に、プロパティx、y、controlX1、controlY1、controlX2、controlY2、およびコントロールポイントの座標を、以下に示すようにセッターメソッドで設定する必要があります。

//Setting properties of the class CubicCurve
cubicCurveTo.setControlX1(400.0f);
cubicCurveTo.setControlY1(40.0f);
cubicCurveTo.setControlX2(175.0f);
cubicCurveTo.setControlY2(250.0f);
cubicCurveTo.setX(500.0f);
cubicCurveTo.setY(150.0f);

ステップ6:パスクラスの観察可能なリストに要素を追加する

前の手順で作成したパス要素→ MoveTo および CubicCurveTo を、次のように Path クラスの監視可能なリストに追加します-

//Adding the path elements to Observable list of the Path class
path.getElements().add(moveTo);
path.getElements().add(cubicCurveTo);

ステップ7:グループオブジェクトの作成

パッケージ javafx.scene に属する Group という名前のクラスをインスタンス化して、グループオブジェクトを作成します。

前の手順で作成したLine(ノード)オブジェクトをパラメーターとしてGroupクラスのコンストラクターに渡します。 これは、以下に示すようにグループに追加するために行うことができます-

Group root = new Group(line);

ステップ8:シーンオブジェクトの作成

パッケージ javafx.scene に属する Scene という名前のクラスをインスタンス化して、シーンを作成します。 このクラスに、前の手順で作成したGroupオブジェクト*(root)*を渡します。

ルートオブジェクトに加えて、次のようにグループクラスのオブジェクトと一緒に画面の高さと幅を表す2つの二重パラメータを渡すこともできます-

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

ステップ9:ステージのタイトルを設定する

*Stage* クラスの* setTitle()*メソッドを使用して、ステージにタイトルを設定できます。 *primaryStage* は、シーンクラスのstartメソッドにパラメーターとして渡されるStageオブジェクトです。
*primaryStage* オブジェクトを使用して、シーンのタイトルを次のように *Sample Application* として設定します。
primaryStage.setTitle("Sample Application");

ステップ10:ステージにシーンを追加する

*Stage* という名前のクラスの* setScene()*メソッドを使用して、Sceneオブジェクトをステージに追加できます。 以下に示すように、このメソッドを使用して、前の手順で準備したシーンオブジェクトを追加します-
primaryStage.setScene(scene);

ステップ11:ステージのコンテンツを表示する

次のように Stage クラスの* show()*という名前のメソッドを使用して、シーンのコンテンツを表示します。

primaryStage.show();

ステップ12:アプリケーションの起動

次のように、メインメソッドから Application クラスの* launch()*静的メソッドを呼び出して、JavaFXアプリケーションを起動します。

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

以下は、JavaFXの Path という名前のクラスを使用して、現在のポイントから指定された位置まで3次曲線を描くプログラムです。 このコードを CubicCurveToExample.java という名前のファイルに保存します。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.CubicCurveTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;

public class CubicCurveToExample 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 CubicCurve
      CubicCurveTo cubicCurveTo = new CubicCurveTo();

     //Setting properties of the class CubicCurve
      cubicCurveTo.setControlX1(400.0f);
      cubicCurveTo.setControlY1(40.0f);
      cubicCurveTo.setControlX2(175.0f);
      cubicCurveTo.setControlY2(250.0f);
      cubicCurveTo.setX(500.0f);
      cubicCurveTo.setY(150.0f);

     //Adding the path elements to Observable list of the Path class
      path.getElements().add(moveTo);
      path.getElements().add(cubicCurveTo);

     //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 cubic 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 CubicCurveToExample.java
java CubicCurveToExample

実行時に、上記のプログラムは3次曲線を表示するJavaFXウィンドウを生成します。 以下に示すように、これは現在の位置から指定されたポイントまで描画されます。

3次曲線パスの描画