Javafx-2dshapes-svgpath

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

JavaFX-2DシェイプSVGPath

SVG *(Scalable Vector Graphics)*は、ベクターベースのグラフィックスを定義するXMLベースの言語です。

JavaFXでは、SVGパスを解析して画像を構築できます。 このような形状は、 SVGPath という名前のクラスで表されます。 このクラスは、パッケージ javafx.scene.shape に属します。

このクラスをインスタンス化することにより、JavaFXでSVGパスを解析して作成されるノードを作成できます。

このクラスには、Stringデータ型の content というプロパティがあります。 これは、画像を描画するSVGパスエンコード文字列を表します。

SVGパスを解析して図形を描画するには、このクラスの* setContent()*という名前のメソッドを次のように使用して、このプロパティに値を渡す必要があります-

setContent(value);

SVGPathを描画する手順

JavaFXでSVGPathを解析して図形を描画するには、以下の手順に従います。

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

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

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

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

SVGPathを解析することにより、JavaFXで必要な形状を作成できます。 そのためには、パッケージ javafx.scene.shape に属する SVGPath という名前のクラスをインスタンス化します。 このクラスを次のようにインスタンス化できます。

//Creating an object of the class SVGPath
SVGPath svgpath = new SVGPath();

ステップ3:SVGPathの設定

メソッド* setContent()*を使用して、SVGオブジェクトのコンテンツを設定します。 このメソッドには、SVGPathを渡す必要があります。 whichを使用して、次のコードブロックに示すように、文字列の形で図形を描画する必要があります。

String path = "M 100 100 L 300 100 L 200 300 z";
//Setting the SVGPath in the form of string
svgPath.setContent(path);

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

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

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

Group root = new Group(svgpath);

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

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

ルートオブジェクトに加えて、画面の高さと幅を表す2つのdoubleパラメーターを、Groupクラスのオブジェクトとともに次のように渡すこともできます。

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

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

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

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

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

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

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

primaryStage.show();

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

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

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

以下は、JavaFXを使用してSVGパスを解析して形状を生成するプログラムです。 このコードを SVGExample.java という名前のファイルに保存します。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.SVGPath;
import javafx.stage.Stage;

public class SVGExample extends Application {
   @Override
   public void start(Stage stage) {
     //Creating a SVGPath object
      SVGPath svgPath = new SVGPath();

      String path = "M 100 100 L 300 100 L 200 300 z";

     //Setting the SVGPath in the form of string
      svgPath.setContent(path);

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

     //Creating a scene object
      Scene scene = new Scene(root, 600, 300);

     //Setting title to the Stage
      stage.setTitle("Drawing a Sphere");

     //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 SVGExample.java
java SVGExample

実行時に、上記のプログラムは、以下に示すように* SVGパス*を解析することによって描画される三角形を表示するJavaFXウィンドウを生成します。

描画球