我有一个ImageView
由 png 图像(透明背景)组成的。我想连续改变图像的颜色。我可以使用JFXFillTransition
jfoenix 库中的方法更改颜色。该方法的构造函数需要javafx.scene.layout.Region
,因此不能javafx.scene.Image.ImageView
直接应用。我正在使用 aVBox
并ImageView
在其中添加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();
});