Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

JavaFX 2D 도형의 Stroke Miter Limit 속성 이해하기

Stroke Miter Limit 속성이란?

Stroke Miter Limit(스트로크 마이터 제한) 속성은 StrokeLineJoin.MITER 스타일로 선분을 연결할 때 마이터 조인(miter join)이 허용되는 한계를 지정하는 속성입니다.

두 선분이 예각으로 만나는 지점에서는 모서리가 뾰족하게 길게 뻗어 나오는데, 이때 마이터 길이가 스트로크 두께에 비해 과도하게 커지지 않도록 비율 상한선을 정해 주는 역할을 합니다. 설정된 한계를 초과하면 해당 모서리는 마이터 대신 베벨(bevel) 형태로 잘려 처리됩니다.

setStrokeMiterLimit() 메서드

이 값은 javafx.scene.shape.Shape 클래스의 setStrokeMiterLimit() 메서드를 통해 설정할 수 있습니다.

이 메서드는 double 타입의 값을 매개변수로 받아 스트로크 마이터 제한을 해당 값으로 지정합니다. 만약 전달된 값이 1.0보다 작으면 자동으로 1.0으로 간주되어 처리됩니다.

예제 코드

아래 예제에서는 서로 다른 마이터 제한 값(3, 4, 0.4)을 적용한 세 개의 삼각형 폴리곤을 그려 그 차이를 시각적으로 확인할 수 있습니다.

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Polygon;
import javafx.scene.shape.StrokeLineJoin;
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 StrokeMiterExample extends Application {
   public void start(Stage stage) {
      Font font = Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 12);

      Text label2 = new Text("Miter Limit: 3");
      label2.setFont(font);
      label2.setX(50.0);
      label2.setY(275.0);
      Polygon shape1 = new Polygon(100.0, 50.0, 50.0, 200.0, 150.0, 200.0);
      shape1.setStroke(Color.BLUE);
      shape1.setStrokeWidth(20);
      shape1.setStrokeLineJoin(StrokeLineJoin.MITER);
      shape1.setStrokeMiterLimit(3);

      Text label3 = new Text("Miter Limit: 4");
      label3.setFont(font);
      label3.setX(250.0);
      label3.setY(275.0);
      Polygon shape2 = new Polygon(300.0, 50.0, 250.0, 200.0, 350.0, 200.0);
      shape2.setStroke(Color.BLUE);
      shape2.setStrokeWidth(20.0);
      shape2.setStrokeLineJoin(StrokeLineJoin.MITER);
      shape2.setStrokeMiterLimit(4);

      Text label4 = new Text("Miter Limit: 0.4");
      label4.setFont(font);
      label4.setX(430.0);
      label4.setY(275.0);
      Polygon shape3 = new Polygon(490.0, 50.0, 440, 200.0, 540.0, 200.0);
      shape3.setStroke(Color.BLUE);
      shape3.setStrokeWidth(20.0);
      shape3.setStrokeLineJoin(StrokeLineJoin.MITER);
      shape3.setStrokeMiterLimit(0.4);

      // Group 객체 생성
      Group root = new Group(label2, label3, label4, shape1, shape2, shape3);

      // Scene 객체 생성
      Scene scene = new Scene(root, 595, 310);

      // Stage 제목 설정
      stage.setTitle("Stroke Miter Limit");

      // Stage에 Scene 추가
      stage.setScene(scene);

      // Stage 내용 표시
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

실행 결과

위 코드를 실행하면 마이터 제한 값에 따라 삼각형 꼭짓점의 모양이 어떻게 달라지는지 확인할 수 있습니다. 값이 클수록 뾰족한 마이터 조인이 유지되고, 한계를 벗어나면 모서리가 잘린 형태로 렌더링됩니다.

JavaFX 2D 도형의 Stroke Miter Limit 속성 이해하기