Javafx 2 javafx2-fx效果打破不透明度

Javafx 2 javafx2-fx效果打破不透明度,javafx-2,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)

还有人发现在样式中添加-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);
}
公共类TestGUI扩展应用程序{
@凌驾
公共作废开始(最终阶段初级阶段){
Line=LineBuilder.create()
.startX(150)
.斯塔蒂(0)
.endX(150)
.endY(250)
.build();
Button btn=ButtonBuilder.create()
.text(“打开倒计时!”)
//这打破了不透明性!
.style(“-fx效果:dropshadow(三通框,灰色,5,0.5,2,5);”)
.不透明度(0.6)
.build();
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
System.out.println(“点击按钮”);
}
});
StackPane root=新的StackPane();
root.getChildren().addAll(行,btn);
场景=新场景(根,300,250);
primaryStage.setTitle(“测试应用程序”);
初级阶段。场景(场景);
primaryStage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}

取出
style
子句,您可以通过按钮看到行


这是一个错误还是我遗漏了什么。

阴影实际上是半透明节点的阴影,并且是半透明的,但由于您将半透明节点层叠在translucent阴影之上,因此总体结果仍然是半透明的,但比没有对节点应用阴影时不透明得多。类似于分层两个50%不透明的节点。两层节点的相交区域将为75%不透明

在示例中,将不透明度设置为0.6,因此节点+阴影的组合不透明度为0.6+0.4*0.6=0.84。加上阴影的颜色比受影响节点的颜色要深。这使得很难看到受影响节点后面的线-但是您仍然可以看到它,因为节点+它的效果不是完全不透明的。为了更清楚地显示发生了什么,我将样本的不透明度设置为0.2,使组合不透明度为0.36。您可以在下面的屏幕截图中看到结果,受影响节点后面的线仍然清晰可见


通常,阴影和不透明节点在视觉上不会混合在一起,看起来也不是很好

阴影实际上是半透明节点的阴影,并且是半透明的,但由于将半透明节点分层在translucent阴影之上,因此整体结果仍然是半透明的,但比没有阴影应用到节点时更加不透明。类似于分层两个50%不透明的节点。两层节点的相交区域将为75%不透明

在示例中,将不透明度设置为0.6,因此节点+阴影的组合不透明度为0.6+0.4*0.6=0.84。加上阴影的颜色比受影响节点的颜色要深。这使得很难看到受影响节点后面的线-但是您仍然可以看到它,因为节点+它的效果不是完全不透明的。为了更清楚地显示发生了什么,我将样本的不透明度设置为0.2,使组合不透明度为0.36。您可以在下面的屏幕截图中看到结果,受影响节点后面的线仍然清晰可见


通常情况下,阴影和不透明节点在视觉上不会混合在一起,看起来很好

回答得很好-谢谢!无论如何,我可能对美学有点着迷,但你是对的,这两种效果不太协调。最有可能的是,我所想象的只是你通常看到的阴影部分的效果,也就是说,我应该在底部和右侧画一条线,然后将其模糊。回答得很好-谢谢!无论如何,我可能对美学有点着迷,但你是对的,这两种效果不太协调。最有可能的是,我所想象的只是你通常看到的阴影部分的效果,也就是说,我应该在底部和右侧画一条线,然后将其模糊。