Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaFXのパス要素とは?種類と使い方をわかりやすく解説

javafx.scene.shape パッケージには、2D図形を描画するためのさまざまなクラスが用意されています。しかし、これらは直線、円、多角形、楕円といった基本的な(プリミティブな)図形に限られます。より複雑なカスタム図形を描きたい場合は、Pathクラスを使用する必要があります。

Pathクラスとは

Pathクラスは、図形の幾何学的な輪郭を表すクラスです。このクラスを使うことで、独自のカスタムパスを自由に描画できます。

カスタムパスを描くために、JavaFXでは複数の「パス要素」が提供されており、これらはすべて javafx.scene.shape パッケージ内のクラスとして利用可能です。

主なパス要素の一覧

  • LineTo − パス要素「直線」を表すクラスです。現在の座標から指定した新しい座標まで、まっすぐな線を描画します。

  • HlineTo − パス要素「水平線」を表すクラスです。現在の座標から指定した新しい座標まで、水平方向の線を描画します。

  • VLineTo − パス要素「垂直線」を表すクラスです。現在の座標から指定した新しい座標まで、垂直方向の線を描画します。

  • QuadCurveTo − パス要素「二次曲線」を表すクラスです。現在の座標から指定した新しい座標まで、二次ベジェ曲線を描画します。

  • CubicCurveTo − パス要素「三次曲線」を表すクラスです。現在の座標から指定した新しい座標まで、三次ベジェ曲線を描画します。

  • ArcTo − パス要素「円弧」を表すクラスです。現在の座標から指定した新しい座標まで、円弧を描画します。

  • MoveTo − このクラスを使うと、描画開始点を現在の座標から新しい座標へ移動できます。実際には線は描かれず、パスの起点を設定する役割を持ちます。

パス要素を使ってパスを作成する手順

Pathクラスは、現在のパスを構成するパス要素を保持するオブザーバブルリスト(ObservableList)を持っています。パスを描くには、以下の手順に従います。

  • 必要なPathElementクラスのインスタンスを生成します。

  • セッターメソッドを使って各パス要素のプロパティを設定するか、コンストラクタの引数として値を渡します。

  • Pathクラスのインスタンスを生成します。

  • getElements() メソッドを使って、作成したPathオブジェクトのオブザーバブルリストを取得します。

  • add() または addAll() メソッドを使って、すべてのパス要素オブジェクトを希望する順序でリストに追加します。

  • 最後に、パスをGroupオブジェクトに追加します。

補足: パス要素は、Pathクラスのコンストラクタに直接渡すこともできます。この方法ならコードがより簡潔になります。

サンプルコード

次のJavaFXの例では、MoveToとLineToのパス要素を使って星形のような図形を描画しています。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
public class PathElementsExample extends Application {
    public void start(Stage stage) {
        // 図形の描画
        MoveTo moveTo = new MoveTo(208, 71);
        LineTo line1 = new LineTo(421, 161);
        LineTo line2 = new LineTo(226,232);
        LineTo line3 = new LineTo(332,52);
        LineTo line4 = new LineTo(369, 250);
        LineTo line5 = new LineTo(208, 71);
        // Pathの作成
        Path path = new Path(moveTo, line1, line2, line3, line4, line5);
        path.setFill(Color.DARKCYAN);
        path.setStrokeWidth(8.0);
        path.setStroke(Color.DARKSLATEGREY);
        // Stageオブジェクトの準備
        Group root = new Group(path);
        Scene scene = new Scene(root, 595, 300, Color.BEIGE);
        stage.setTitle("Drawing an arc through a path");
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String args[]){
        launch(args);
    }
}

実行結果

上記のコードを実行すると、複数の直線パス要素を組み合わせて描かれた塗りつぶし図形が表示されます。MoveToで起点を設定し、その後LineToで各頂点を順番に結んでいくことで、自由な形状のカスタム図形が完成します。

JavaFXのパス要素とは?種類と使い方をわかりやすく解説

  1. JavaFXで2Dオブジェクトに行えるさまざまな操作とは?和・差・積の基本を解説

    JavaFXでは、2Dオブジェクト(図形)に対して和(Union)、差(Subtraction)、積(Intersection)という3つの基本的な操作をサポートしています。これらの操作は、javafx.scene.shape.Shapeクラスに用意された静的メソッド(Shape.union()、Shape.subtract()、Shape.intersect())を利用することで簡単に実行でき、複数の図形を組み合わせた新しい形状を作成できます。 JavaFXの2Dオブジェクトに対する3つの操作 和(Union)操作 − 2つ以上の図形を入力として受け取り、それらの図形全体が占める領域を1つ

  2. JavaFXで描画できる2D形状の種類と作成方法を徹底解説

    JavaFXで利用できる主な2D形状JavaFXでは、javafx.scene.shapeパッケージに含まれるクラスを使うことで、さまざまな2D形状(ジオメトリックシェイプ)を簡単に描画できます。ここでは、代表的な形状とそれぞれの特徴を詳しく紹介します。Line(直線) − 2点を結ぶ幾何学的構造です。javafx.scene.shape.LineクラスがXY平面上の直線を表します。Rectangle(長方形) − 4辺からなる多角形で、2組の平行で等しい辺を持ち、すべての内角が直角である図形です。javafx.scene.shape.RectangleクラスがXY平面上の長方形を表します。C