gpt4 book ai didi

JavaFX 将旋转应用于 CSS 中的图像

转载 作者:行者123 更新时间:2023-12-02 07:08:25 25 4
gpt4 key购买 nike

我想知道是否有一种方法可以对设置到某个按钮的图像应用一些变换(即旋转)。我正在使用 css 通过这种方式指定所有图像:

.custom-button {
-fx-graphic: url("imgs/buttons/button.png");
...
}

.custom-button:hover {
-fx-graphic: url("imgs/buttons/button_hover.png");
...
}

.custom-button:selected {
-fx-graphic: url("imgs/buttons/button_selected.png");
...
}

我也想在 css 中指定这样的转换。我怎样才能做到这一点?我想找到类似的东西:

.custom-button .graphic {
-fx-rotate: 90;
}

最佳答案

让我们从一个示例应用程序开始:

Main.java

package application;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {
@Override
public void start(Stage primaryStage) {
Button button = new Button("Button");
VBox vBox = new VBox(button);
vBox.setPadding(new Insets(10.0));
Scene scene = new Scene(vBox, 200, 100);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
System.out.println();
}

public static void main(String[] args) {
launch(args);
}
}

application.css

.button {
-fx-graphic: url(image.png);
}

结果

image1

方法1(找出图像使用的类)

这可以使用调试器( set a breakpoint on println() and check the content of button.graphic.value )轻松完成。这里使用的类是 ImageView 。这意味着可以使用以下方法旋转图像:

.button .image-view {
-fx-rotate: 45;
}

结果

image2

方法二(为图形对象设置自定义类)

这可以使用 ChangeListener 来完成:

button.graphicProperty().addListener((ChangeListener<Node>) (observable, oldValue, newValue) -> {
newValue.getStyleClass().add("my-class");
});

然后可以使用以下命令来旋转图像:

.my-class {
-fx-rotate: 45;
}

结果

image2

填充

如果图像占用太多空间,您可能需要向按钮添加额外的填充:

.button {
-fx-graphic: url(image.png);
-fx-graphic-text-gap: 10;
-fx-label-padding: 5 0 5 5;
}

结果

image3

关于JavaFX 将旋转应用于 CSS 中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40450084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com