是否有其他人发现在样式中添加-fx-effect会阻止不透明效果?
这是一个简单的例子
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
子句,您可以通过按钮看到该行。
这是一个错误还是我错过了什么。
答案 0 :(得分:1)
阴影实际上是半透明节点的阴影和半透明本身,但是因为您在半透明阴影的顶部层叠半透明节点,所以整体结果仍然是半透明的,但是比没有应用阴影时更不透明。节点。类似于分层两个50%的不透明节点。两个分层节点的交叉区域将是75%不透明。
在样本中,将不透明度设置为0.6,因此节点+阴影的组合不透明度为0.6 + 0.4 * 0.6 = 0.84。此外,阴影的颜色比受影响的节点更暗。这使得很难看到受影响节点后面的线 - 但你仍然可以看到它,因为节点+它的效果不是完全不透明的。为了更清楚地显示发生的情况,我将样本的不透明度设置为0.2,使组合不透明度为0.36。您可以在下面的屏幕截图中看到结果,其中受影响节点后面的线仍然清晰可见。
通常情况下,阴影和不透明节点在视觉上不会混合在一起看起来很好看