JavaFXで描画できる2D形状の種類と作成方法を徹底解説
JavaFXで利用できる主な2D形状
JavaFXでは、javafx.scene.shapeパッケージに含まれるクラスを使うことで、さまざまな2D形状(ジオメトリックシェイプ)を簡単に描画できます。ここでは、代表的な形状とそれぞれの特徴を詳しく紹介します。
Line(直線) − 2点を結ぶ幾何学的構造です。javafx.scene.shape.LineクラスがXY平面上の直線を表します。
Rectangle(長方形) − 4辺からなる多角形で、2組の平行で等しい辺を持ち、すべての内角が直角である図形です。javafx.scene.shape.RectangleクラスがXY平面上の長方形を表します。
Circle(円) − 閉じたループを形成し、円周上のすべての点が中心点から一定の距離にある図形です。javafx.scene.shape.CircleクラスがXY平面上の円を表します。
Ellipse(楕円) − 2つの焦点によって定義される図形です。楕円上の任意の点から2つの焦点までの距離の合計は常に一定になります。javafx.scene.shape.EllipseクラスがXY平面上の楕円を表します。
Polygon(多角形) − 同一平面上の複数の線分を端と端で連結して形成される閉じた図形です。javafx.scene.shape.PolygonクラスがXY平面上の多角形を表します。
Polyline(折れ線) − Polygonとよく似ていますが、始点と終点が閉じられていない点が異なります。1本以上の線分で構成される連続した線です。javafx.scene.shape.PolylineクラスがXY平面上の折れ線を表します。
CubicCurve(3次曲線) − XY平面上のベジェパラメトリック曲線の一種で、3次の曲線です。javafx.scene.shape.CubicCurveクラスがXY平面上の3次曲線を表します。
QuadCurve(2次曲線) − XY平面上のベジェパラメトリック曲線の一種で、2次の曲線です。javafx.scene.shape.QuadCurveクラスがXY平面上の2次曲線を表します。
Arc(弧) − 曲線の一部を表す図形です。javafx.scene.shape.ArcクラスがXY平面上の弧を表します。
2D形状を作成する基本の手順
目的の形状を作成するには、以下の3つのステップに従います。
対応する形状クラスをインスタンス化する
必要に応じてプロパティを設定する
作成したオブジェクトをGroupに追加する
サンプルコード
次のJavaFXのサンプルプログラムは、利用可能なすべての2D形状の作成方法を実演しています。
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.scene.shape.Circle;
import javafx.scene.shape.CubicCurve;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Line;
import javafx.scene.shape.Polygon;
import javafx.scene.shape.Polyline;
import javafx.scene.shape.QuadCurve;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class JavaFXShapes extends Application {
public void start(Stage stage) {
Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12);
Text cirText = new Text("Circle");
cirText.setFont(font);
cirText.setX(50);
cirText.setY(130);
Text rectText = new Text("Rectangle");
rectText.setFont(font);
rectText.setX(170);
rectText.setY(130);
Text ellipseText = new Text("Ellipse");
ellipseText.setFont(font);
ellipseText.setX(310);
ellipseText.setY(130);
Text polyText = new Text("Polygon");
polyText.setFont(font);
polyText.setX(425);
polyText.setY(130);
Text lineText = new Text("Line");
lineText.setFont(font);
lineText.setX(530);
lineText.setY(130);
Text polyLineText = new Text("Poly Line");
polyLineText.setFont(font);
polyLineText.setX(40);
polyLineText.setY(260);
Text cubicCurveText = new Text("Cubic Curve");
cubicCurveText.setFont(font);
cubicCurveText.setX(140);
cubicCurveText.setY(260);
Text quadCurveText = new Text("Quad Curve");
quadCurveText.setFont(font);
quadCurveText.setX(340);
quadCurveText.setY(260);
Text arcText = new Text("Arc");
arcText.setFont(font);
arcText.setX(490);
arcText.setY(260);
//Drawing a circle
Circle circle = new Circle(75.0f, 65.0f, 40.0f );
//Drawing a Rectangle
Rectangle rect = new Rectangle(150, 30, 100, 65);
//Drawing an ellipse
Ellipse ellipse = new Ellipse(330, 60, 60, 35);
//Drawing Polygon
Polygon poly = new Polygon(410, 60, 430, 30, 470, 30, 490, 60, 470, 100, 430, 100 );
//Drawing a Line
Line line = new Line(540, 30, 540, 90);
line.setStrokeWidth(5.0);
//Drawing a Poly line
Polyline polyLine = new Polyline(25, 210, 100, 210, 50, 180, 50, 230);
polyLine.setStrokeWidth(5.0);
//Drawing a cubic curve
CubicCurve cubicCurve = new CubicCurve(150.0, 210.0, 200.0, 70.0, 200.0, 290.0, 270.0, 210.0);
//Drawing Quadratic curve
QuadCurve quadCurve = new QuadCurve(400.0, 200.0, 440.0, 250.0, 330.0, 170.0);
//Drawing an arc
Arc arc = new Arc(490, 240, 50, 80, 30, 70);
arc.setType(ArcType.ROUND);
//Setting the stage
Group root = new Group(
circle, ellipse, rect, poly, line,
polyLine, cubicCurve, quadCurve, arc,
cirText, rectText, ellipseText, polyText, lineText,
polyLineText, cubicCurveText, quadCurveText, arcText);
Scene scene = new Scene(root, 600, 300);
stage.setTitle("2D shapes Example");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]){
launch(args);
}
}実行結果
このプログラムを実行すると、円・長方形・楕円・多角形・直線・折れ線・3次曲線・2次曲線・弧の9種類の2D形状が、それぞれのラベル付きで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つ
-
JavaFXのパス要素とは?種類と使い方をわかりやすく解説
javafx.scene.shape パッケージには、2D図形を描画するためのさまざまなクラスが用意されています。しかし、これらは直線、円、多角形、楕円といった基本的な(プリミティブな)図形に限られます。より複雑なカスタム図形を描きたい場合は、Pathクラスを使用する必要があります。 Pathクラスとは Pathクラスは、図形の幾何学的な輪郭を表すクラスです。このクラスを使うことで、独自のカスタムパスを自由に描画できます。 カスタムパスを描くために、JavaFXでは複数の「パス要素」が提供されており、これらはすべて javafx.scene.shape パッケージ内のクラスとして利用可能です。