JavaFXのPathクラスを使ってカスタム図形を描画する方法を解説
javafx.scene.shapeパッケージには、さまざまな2D図形を描画するためのクラスが用意されています。しかし、これらは直線、円、ポリゴン、楕円といった基本的なプリミティブ形状に限られます。
そのため、より複雑なカスタム図形を描きたい場合は、Pathクラスを使用する必要があります。
Pathクラスとは
Pathクラスは、図形の幾何学的な輪郭(パス)を表すクラスです。このクラスには、MoveTo、LineTo、HlineTo、VlineTo、ArcTo、QuadCurveTo、CubicCurveToといった各種パス要素(PathElement)を保持するオブザーバブルリストが関連付けられています。
Pathクラスのコンストラクタは、PathElement型の可変長引数を受け取り、指定されたパス要素に基づいてパスを構築します。
サンプルコード
パス要素のMoveToは、パスの現在位置を指定した座標へ移動するために使用します。一方、LineToは、現在の座標から指定した座標まで直線を描画します。
次の例では、MoveToとLineTo、そしてPathクラスを組み合わせて、複雑なカスタム図形を描画しています。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
public class ComplexShape extends Application {
public void start(Stage stage) {
// 図形の描画
MoveTo moveTo = new MoveTo(108, 71);
LineTo line1 = new LineTo(321, 161);
LineTo line2 = new LineTo(126,232);
LineTo line3 = new LineTo(232,52);
LineTo line4 = new LineTo(269, 250);
LineTo line5 = new LineTo(108, 71);
// Pathオブジェクトの作成
Path path = new Path(moveTo, line1, line2, line3, line4, line5);
// Stageオブジェクトの準備
Group root = new Group(path);
Scene scene = new Scene(root, 600, 300);
stage.setTitle("Drawing an arc through a path");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]){
launch(args);
}
}実行結果
上記のコードを実行すると、MoveToで設定した開始点から、複数のLineToで指定した座標を順番に結んだ星形のような多角形が表示されます。最後のLineToで最初の座標(108, 71)に戻ることで、閉じた図形として完成します。

-
OpenCV Javaライブラリで画像に幾何学的図形を描画する方法
Java版OpenCVライブラリの org.opencv.imgproc パッケージには、Imgproc クラスが含まれています。このクラスは、resize()、warpAffine()、filter2D() など、入力画像を処理するためのさまざまなメソッドを提供しています。さらに、Imgprocクラスには画像上に幾何学的図形を描画するためのメソッド群も用意されています。主なものは以下のとおりです。図形メソッドと説明楕円(Ellipse)ellipse() メソッドを使用すると、画像に楕円を描画できます。円(Circle)circle() メソッドを使用すると、画像に円を描画できます。長方形(
-
【Java】Graphicsオブジェクトで角丸の長方形を描画する方法を解説
JavaでGUIアプリケーションに図形を描画したい場合、Graphicsオブジェクトを使うのが基本となります。この記事では、Graphicsオブジェクトの基礎知識と、drawRoundRect()メソッドを使って角丸の長方形(ラウンドレクト)を描画する具体的な手順を、サンプルコード付きで解説します。 Graphicsクラスとは Javaにおける描画処理は、java.awt.GraphicsクラスのインスタンスであるGraphicsオブジェクトを通じて行われます。 各Graphicsオブジェクトは独自の座標系を持ち、文字列・線・矩形・円・多角形など、さまざまな図形を描画するためのメソッドを備え