0

我有一个ImageView由 png 图像(透明背景)组成的。我想连续改变图像的颜色。我可以使用JFXFillTransitionjfoenix 库中的方法更改颜色。该方法的构造函数需要javafx.scene.layout.Region,因此不能javafx.scene.Image.ImageView直接应用。我正在使用 aVBoxImageView在其中添加VBox. 显然,默认情况下VBox's 的宽度不会包裹内容(此处ImageView)。给出了包装内容的解决方案。但是 group 不能用作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();
    });

在此处输入图像描述

4

0 回答 0