【问题标题】:Make Rectangle transparent使矩形透明
【发布时间】:2014-12-01 01:56:40
【问题描述】:

我需要使绘制的矩形鼠标透明,以便看到桌面。 以下代码绘制了我的矩形。我应该添加什么来获得它? 感谢您的帮助

public void start(Stage primaryStage) {
    Group group = new Group();

    Rectangle rect = new Rectangle(20,20,200,200);

    rect.setArcHeight(15);
    rect.setArcWidth(15);

    rect.setStroke(Color.BLACK);
    group.getChildren().add(rect);

    Scene scene = new Scene(group, 300, 200);
    primaryStage.setScene(scene);
    primaryStage.show();
}

【问题讨论】:

  • 你能澄清一下吗?如果你想看到桌面,你需要窗口是透明的,但也许这不是你的意思?

标签: java javafx-8 stage scene


【解决方案1】:

如果我理解正确,因为我没有得到“绘制的矩形鼠标透明”的鼠标部分 - 你的矩形应该是透明的?

你必须改变一个矩形的不透明度: rect.opacityProperty().set(0.5);

【讨论】:

  • 如果你的意思是:rect.setStroke(new javafx.scene.paint.Color(0, 0, 0, 0));把它变成黑色
  • 用1,矩形也是黑色的:-(
  • 检查编辑的答案。 :) 遗憾的是,您不能只应用透明颜色。你必须指定一个矩形的 alpha 通道(奇怪,奇怪......)。所以越接近 0.0 越透明 1.0 是实心的。
  • 太棒了!这就是我想要的。非常感谢:-)
【解决方案2】:

如果你只是想让矩形的内部是透明的,那么你只需要

rect.setFill(Color.TRANSPARENT);

但我不太确定这是否是您的意思。

【讨论】:

    【解决方案3】:

    由于JavaFX中的屏幕图形是分层结构的,要显示桌面,您还需要使StageScene透明,并使用“算术”形状:

    @Override
    public void start(Stage stage) {
        Group group = new Group();
        Rectangle rect = new Rectangle(0, 0, 350, 300);
        Rectangle clip = new Rectangle(20, 20, 200, 200);
        clip.setArcHeight(15);
        clip.setArcWidth(15);
    
        Shape shape = Shape.subtract(rect, clip);
    
        shape.setFill(Color.GRAY);
        group.getChildren().add(shape);
        Scene scene = new Scene(group);
        scene.setFill(Color.TRANSPARENT);
        stage.initStyle(StageStyle.TRANSPARENT);
        stage.setScene(scene);
        stage.show();
    }
    

    稍后您可以将可拖动功能添加到窗格/组。

    【讨论】:

    • 感谢您的帮助。可拖动功能是我的下一个目标。我应该打开一个新问题,因为我无法得到它吗?
    • @StéphaneGROSSMANN 请参阅this answer 以获取提示。如果没有帮助,可以打开新问题。
    • 我把这个 stackoverflow.com/questions/26254354/… 但没有答案 :-( Tks 不管怎样
    猜你喜欢
    • 2016-05-25
    • 2016-03-12
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多