javafx - 设置png图像的背景

时间:2016-12-14 17:37:56

标签: java javafx imageview pane vbox

我有ImageView由png图像(透明背景)组成。我想连续改变图像的颜色。我可以使用jfoenix库中的JFXFillTransition方法更改颜色。该方法的构造函数需要javafx.scene.layout.Region,因此无法直接应用于javafx.scene.Image.ImageView。我正在使用VBox并在ImageView中添加VBox。显然,VBox的宽度默认情况下不会包含内容(此处为ImageView)。 This提供了包装内容的解决方案。但是这里不能将组用作JFXFillTransition的参数。因此,如果我运行代码,VBox的颜色会发生变化但不限于ImageView(因为VBox大于图像)。那么,我怎样才能缩小VBox的大小以便它只包装图像(任何其他适用于此的窗格也可以)?

代码段:

VBox openingImageBox = new VBox();
    openingImageBox.setAlignment(Pos.CENTER);
    openingImageBox.getChildren().add(openingImageView);
    borderPane.setTop(openingImageBox);


    //Transition On ImageView
    JFXFillTransition transition1 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.VIOLET,Color.INDIGO);
    JFXFillTransition transition2 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.INDIGO,Color.BLUE);
    JFXFillTransition transition3 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.BLUE,Color.GREEN);
    JFXFillTransition transition4 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.GREEN,Color.YELLOW);
    JFXFillTransition transition5 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.YELLOW,Color.ORANGE);
    JFXFillTransition transition6 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.ORANGE,Color.RED);
    JFXFillTransition transition7 = new JFXFillTransition(Duration.millis(1000),openingImageBox,Color.RED,Color.VIOLET);
    transition1.play();
    transition1.setOnFinished(e->
    {
        transition2.play();
    });
    transition2.setOnFinished(e->
    {
        transition3.play();
    });
    transition3.setOnFinished(e->
    {
        transition4.play();
    });
    transition4.setOnFinished(e->
    {
        transition5.play();
    });
    transition5.setOnFinished(e->
    {
        transition6.play();
    });

    transition6.setOnFinished(e->
    {
        transition7.play();
    });
    transition7.setOnFinished(e->
    {
        transition1.play();
    });

enter image description here

0 个答案:

没有答案