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

JavaFXの2D図形で線端のスタイルを指定する!ストロークラインキャップ(Stroke Line Cap)の使い方

ストロークラインキャップとは

JavaFXにおけるストロークラインキャップ(Stroke Line Cap)は、線や図形の輪郭線の端部(終端)のスタイルを指定・定義するためのプロパティです。この値は、javafx.scene.shape.Shapeクラスが提供するsetStrokeLineCap()メソッドを使って簡単に設定できます。

JavaFXでは、列挙型(Enum)であるStrokeLineCapに定義された3つの定数により、3種類のストロークラインキャップがサポートされています。それぞれの特徴は以下のとおりです。

  • BUTT(バット) − 閉じられていないサブパスの端を、何も装飾を加えずにそのまま切断します。

  • ROUND(ラウンド) − 閉じられていないパスの端を、半円状の丸みのある突起で終端処理します。

  • SQUARE(スクエア) − 閉じられていないパスの端を、四角形状の突起で終端処理します。

なお、ROUNDおよびSQUAREを指定した場合、突起部分は線幅の半分だけ線の長さ方向に延びるという点に注意してください。BUTTの場合は線が延びず、指定した座標どおりの長さで描画されます。

サンプルコード

ここでは、通常の線と、3種類のラインキャップを適用した線を並べて表示する例を紹介します。各線には太さ10pxのダークブルーのストロークを設定しています。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Line;
import javafx.scene.shape.StrokeLineCap;
import javafx.scene.shape.StrokeType;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class StrokeLineCapExample extends Application {
   public void start(Stage stage) {
      Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12);
      Text label1 = new Text("Normal Line");
      label1.setFont(font);
      label1.setX(260.0);
      label1.setY(90.0);
      Line line1 = new Line(250.0, 50.0, 350.0, 50.0);

      Text label2 = new Text("Line Cap: BUTT");
      label2.setFont(font);
      label2.setX(50.0);
      label2.setY(235.0);
      Line line2 = new Line(50.0, 200.0, 150.0, 200.0);
      line2.setStroke(Color.DARKBLUE);
      line2.setStrokeWidth(10.0);
      line2.setStrokeType(StrokeType.CENTERED);
      line2.setStrokeLineCap(StrokeLineCap.BUTT);

      Text label3 = new Text("Line Cap: SQUARE");
      label3.setFont(font);
      label3.setX(245.0);
      label3.setY(235.0);
      Line line3 = new Line(250.0, 200.0, 350.0, 200.0);
      line3.setStrokeWidth(10.0);
      line3.setStroke(Color.DARKBLUE);
      line3.setStrokeLineCap(StrokeLineCap.SQUARE);

      Text label4 = new Text("Line Cap: ROUND");
      label4.setFont(font);
      label4.setX(440.0);
      label4.setY(235.0);
      Line line4 = new Line(440, 200.0, 540.0, 200.0);
      line4.setStrokeWidth(10.0);
      line4.setStroke(Color.DARKBLUE);
      line4.setStrokeLineCap(StrokeLineCap.ROUND);

      //Groupオブジェクトの作成
      Group root = new Group(label1, label2, label3, label4, line1, line2, line3, line4);
      //Sceneオブジェクトの作成
      Scene scene = new Scene(root, 595, 310);
      //Stageにタイトルを設定
      stage.setTitle("Stroke Line Cap Example");
      //SceneをStageに追加
      stage.setScene(scene);
      //Stageの内容を表示
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

実行結果

上記のプログラムをコンパイルして実行すると、JavaFXウィンドウが開き、以下のように各ラインキャップの違いを視覚的に確認できます。BUTTは線がそのまま切れたように見え、SQUAREは角ばった突起、ROUNDは丸みのある突起がそれぞれ線端に追加されていることがわかります。

JavaFXの2D図形で線端のスタイルを指定する!ストロークラインキャップ(Stroke Line Cap)の使い方

  1. JavaFXのシーングラフとは?基本構造とノードの役割を解説

    JavaFXにおけるシーングラフとは JavaFXでは、GUIアプリケーションは「シーングラフ(Scene Graph)」と呼ばれるデータ構造を用いて構築されます。シーングラフは、モダンなグラフィカルアプリケーションで広く採用されている、ツリー構造に似たデータ構造です。アプリケーションの起点となるものであり、複数のノード(Node)の集合体として表現されます。 JavaFXで何かを画面に表示するには、ノードを使ってシーングラフを構築し、それをStageクラスのオブジェクトに設定する必要があります。Stageクラスは、JavaFXアプリケーションにおける最上位のコンテナとして機能します。 ノード

  2. Java Swingのアーキテクチャとは?特徴とMVCモデルをわかりやすく解説

    Java Swingは、Javaプログラム向けにグラフィカルユーザーインターフェース(GUI)を提供するAPI群です。Java Swingは、それ以前のAPIであるAbstract Window Toolkit(AWT)をベースに開発されました。AWTと比べて、より豊富で洗練されたGUIコンポーネントを備えており、シンプルな部品から複雑なツリーやテーブルまで幅広く利用できます。さらに、プラグイン可能なルック&フィール(Pluggable Look and Feel)機能により、Javaプログラムの外観を基盤となるプラットフォームから独立して制御できる点も大きな特長です。 Java Swingの