2013-02-02 1 views
1

스타일에서 -fx 효과를 추가하면 불투명도가 작동하지 않는다는 것을 다른 사람이 알고 있습니까?JavaFX 2 -fx 효과로 불투명도가 깨집니다.

다음은 간단한 예제

public class TestGUI extends Application { 

@Override 
public void start(final Stage primaryStage) { 

    Line line = LineBuilder.create() 
      .startX(150) 
      .startY(0) 
      .endX(150) 
      .endY(250) 
      .build(); 

    Button btn = ButtonBuilder.create() 
      .text("Open countdown!") 
      // this breaks the opacity! 
      .style("-fx-effect: dropshadow(three-pass-box, grey, 5, 0.5, 2, 5);") 
      .opacity(0.6) 
      .build(); 

    btn.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent event) { 
      System.out.println("Button clicked"); 
     } 
    }); 

    StackPane root = new StackPane(); 
    root.getChildren().addAll(line, btn); 

    Scene scene = new Scene(root, 300, 250); 

    primaryStage.setTitle("Test Application"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

public static void main(String[] args) { 
    launch(args); 
} 

}

에게있는 style 절을 꺼내 버튼을 통해 라인을 볼 수 있습니다.

버그이거나 실종 됐습니다.

답변

1

그림자는 실제로 반투명 노드의 그림자와 반투명 자체이지만 반투명 노드를 반투명 그림자 위에 레이어하기 때문에 전체 결과는 여전히 반투명하지만 그림자가 적용되지 않은 경우보다 훨씬 불투명합니다 노드로. 두 개의 50 % 불투명 노드를 레이어하는 것과 유사합니다. 두 개의 계층화 된 노드의 교차 영역은 75 % 불투명합니다.

샘플에서는 불투명도를 0.6으로 설정 했으므로 노드 + 그림자의 혼합 불투명도는 0.6 + 0.4 * 0.6 = 0.84입니다. 게다가 그림자는 영향을받은 노드보다 어두운 색입니다. 이렇게하면 영향을받는 노드 뒤의 행을 보는 것이 어려워집니다. 그러나 노드 + 효과가 완전히 불투명하지 않기 때문에 여전히 볼 수 있습니다. 무슨 일이 벌어지고 있는지 보여주기 위해 샘플의 불투명도를 0.2로 설정하여 불투명도를 0.36으로 만들었습니다. 영향을받은 노드 뒤의 선이 여전히 명확하게 보이는 아래 스크린 샷에서 결과를 볼 수 있습니다.

translucent effect

일반적으로, 그림자와 불투명 한 노드는 시각적으로 혼합하고 모두 함께 좋은

+0

멋진 대답 보이지 않는 - 감사합니다! 어쨌든 미적 감각이 약해지기 시작했는데 두 가지 효과가 너무 잘 어울리지 않아요. 내가 상상 한 것 중 가장 가능성이있는 것은 보통 보게되는 그림자의 일부분을 갖는 것, 즉 선의 아래쪽과 RH면을 그리고 그 대신에 흐리게 처리해야한다는 것입니다. –