JavaFX | 그래픽 특수 효과 | 도형의 투과

지금까지의 도형은 모든 도형의 내부를 정해진 색으로 채워진 형태로 되어 있었다. 도형을 포개면, 물론 아래에 있는 도형은 숨겨져 보이지 않게 되었다. 그럼 도형을 반투명하고 아래의 것이 비쳐 보이는 용의 표시를하고 싶다면 어떻게 하면 될까?

그런 경우에는 “setOpacity"라는 메소드를 사용한다. 이것은 도형의 투과율을 설정하는 메소드로 다음과 같이 사용한다.

"Node".setOpacity(투과율);

인수는 0 ~ 1 사이의 실수(double)를 지정한다. 제로라면 투명하게, 1이면 불투명하다.

이것으로 도형을 반투명하게 하는 것은 간단하게 할 수 있다. 다만, 실제로 해보면 알 수 있지만, 이 방법은 “윤곽선만 그려서 도형의 내부는 반투명하게 한다"는 것은 되지 않는다. 이것은 도형 전체를 동일하게 투과하는 것이다. 내부뿐만 아니라 윤곽선도 마찬가지로 투명하게 한다.

도형의 내부를 투과하고 싶은 경우는, setFill을 사용하면 된다. 이것으로 Color.TRANSPARENT를 지정하면 내부가 투명하게 윤곽선만의 도형이 그려진다.

아래 소스 코드는 사용 예제 소스 코드이다.

public void createShape(Pane root){
    for(int i = 0;i < 20;i++){
        Rectangle r = new Rectangle(10, 10, 50, 50);
        r.setFill(Color.BLUE);
        r.setStroke(Color.WHITE);
        r.setTranslateX(20 * i);
        r.setTranslateY(10 * i);
        r.setOpacity(1 - 0.05 * i);
        root.getChildren().add(r);
        Rectangle r2 = new Rectangle(10, 10, 50, 50);
        r2.setStroke(Color.RED);
        r2.setFill(Color.TRANSPARENT);
        r2.setTranslateX(20 * i);
        r2.setTranslateY(10 * i);
        root.getChildren().add(r2);
    }
}

실행하면 사각형이 가로로 나란히 표시된다. 윤곽선만은 빨간색으로 표시되고 그 내부는 조금씩 투명하게 바뀐다.

여기에서는 setOpacity 전체를 투과한 도형과 setFill(Color.TRANSPARENT) 내부를 투과한 도형을포개어서 “윤곽선은 그대로 두고, 내부만 조금씩 투과하는 모양"을 표현하고 있다.