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

JavaFX 2D 도형 속성 완벽 정리: Stroke, Fill 등 주요 설정 방법

JavaFX에서 다루는 모든 2차원(2D) 도형에는 다양한 속성을 설정할 수 있습니다. 이러한 속성들을 잘 활용하면 도형의 테두리 스타일, 색상, 두께 등을 자유롭게 제어할 수 있습니다.

2D 도형의 주요 속성

1. Stroke Type (선 유형)

Stroke Type은 도형의 경계선이 그려지는 위치를 지정하는 속성입니다. Shape 클래스의 setStrokeType() 메서드를 사용하여 설정할 수 있습니다.

JavaFX는 StrokeType이라는 Enum의 세 가지 상수를 통해 선 유형을 지원합니다.

  • StrokeType.INSIDE — 경계선을 도형 내부에 그립니다.
  • StrokeType.OUTSIDE — 경계선을 도형 외부에 그립니다.
  • StrokeType.CENTERED — 경계선을 도형 경계 중앙에 그립니다.

2. Stroke Width (선 너비)

Stroke Width는 도형 경계선의 두께를 정의하는 속성입니다. Shape 클래스의 setWidth() 메서드를 사용하여 경계선의 너비 값을 설정할 수 있습니다.

3. Fill (채우기)

Fill 속성은 도형의 내부 영역을 채울 색상을 지정합니다. Shape 클래스의 fill() 메서드를 사용하면 원하는 색상으로 도형 내부를 채울 수 있습니다.

4. Stroke (윤곽선 색상)

Stroke 속성은 도형 경계선의 색상을 정의합니다. javafx.scene.shape.Shape 클래스의 setStroke() 메서드를 사용하여 경계선 색상을 설정할 수 있습니다.

5. Stroke Line Cap (선 끝 모양)

Stroke Line Cap은 선의 끝부분이 어떤 스타일로 처리될지 지정하는 속성입니다. javafx.scene.shape.Shape 클래스의 setStrokeLineCap() 메서드로 설정할 수 있으며, JavaFX는 StrokeLineCap Enum의 세 가지 상수를 지원합니다.

  • BUTT — 선 끝을 잘라내듯 평평하게 처리합니다.
  • ROUND — 선 끝을 둥글게 처리합니다.
  • SQUARE — 선 끝을 사각형으로 확장하여 처리합니다.

6. Stroke Line Join (선 연결 방식)

여러 개의 선으로 이루어진 도형에서, Stroke Line Join 속성은 두 선이 만나는 연결 부분의 모양을 정의합니다. setStrokeLineJoin() 메서드를 사용하여 설정할 수 있으며, JavaFX는 StrokeLineJoin Enum의 세 가지 상수를 지원합니다.

  • BEVEL — 연결 부분을 비스듬히 잘라낸 형태로 처리합니다.
  • MITER — 연결 부분을 뾰족하게 이어줍니다.
  • ROUND — 연결 부분을 둥글게 처리합니다.

7. Stroke Miter Limit (마이터 한계)

Stroke Miter Limit 속성은 StrokeLineJoin.MITER 스타일 사용 시 선 연결부의 마이터 길이 한계를 지정합니다. javafx.scene.shape.Shape 클래스의 setStrokeMiterLimit() 메서드를 통해 설정할 수 있습니다.

이 메서드는 double 타입의 값을 받아들이며, 지정된 값으로 마이터 한계를 제한합니다. 만약 입력값이 1.0보다 작으면 1.0으로 간주됩니다.

8. Smooth (안티앨리어싱)

Smooth 속성은 도형 렌더링 시 안티앨리어싱(Antialiasing) 힌트를 사용할지 여부를 결정합니다. javafx.scene.shape.Shape 클래스의 setSmooth() 메서드를 사용하여 값을 설정할 수 있습니다.

9. Stroke Dash Offset (대시 오프셋)

경계선이 점선(dashing) 패턴으로 그려져 있는 경우, strokeDashOffset 속성은 해당 패턴 내에서 시작 위치의 오프셋을 지정합니다.

예제 코드

다음은 위에서 설명한 다양한 2D 도형 속성을 Rectangle(사각형)에 적용하는 JavaFX 예제입니다.

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.Rectangle;
import javafx.scene.shape.StrokeLineCap;
import javafx.scene.shape.StrokeLineJoin;
import javafx.scene.shape.StrokeType;
public class ShapeProperties extends Application {
    public void start(Stage stage) {
        // 사각형 그리기
        Rectangle rect = new Rectangle(100.0, 75.0, 400.0, 150.0);
        // 2D 도형 속성 설정
        rect.setStrokeWidth(25.0);
        rect.setStrokeType(StrokeType.OUTSIDE);
        rect.setStroke(Color.BLUE);
        rect.setStrokeMiterLimit(8.0);
        rect.setStrokeLineCap(StrokeLineCap.ROUND);
        rect.setStrokeLineJoin(StrokeLineJoin.MITER);
        rect.setSmooth(false);
        // Stage 객체 준비
        Group root = new Group(rect);
        Scene scene = new Scene(root, 600, 300);
        stage.setTitle("Shape Properties Example");
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String args[]){
        launch(args);
    }
}

실행 결과

위 코드를 실행하면 파란색 굵은 테두리가 바깥쪽으로 그려진 사각형이 화면에 나타나며, 설정한 선 끝 모양과 연결 방식이 함께 적용됩니다.