我正在使用Java / JavaFX编写一个“星际迷航”游戏。我的想法是主游戏画面是一个10x10的按钮GridPane。所有游戏部件(企业,克林贡人,行星等)都会在按钮中显示为图标。这样,您可以单击空间对象来选择它,扭曲它,拍摄它等等:
当然,这完全取决于能否将我的小星舰图像分配到适当的按钮。我已经弄清楚如何将背景应用于按钮,但是当我应用图像时,合身效果并不理想。这是我到目前为止的游戏截图:
“企业”形象排序适合......但不是真的。必须有一种方法来拉伸船只以适应按钮 完全 ,但我还没有找到它。我还必须找到一种方法在Java(而不是CSS或FXML)中执行此操作,因为Java代码必须移动图标。
这是我的代码:
public void setUpBoard(){
// set up 10x10 GridPane of Buttons...
Image testImage = new Image(getClass().getResourceAsStream("Enterprise.png"));
ImageView testImageView = new ImageView(testImage);
testImageView.setFitWidth(55); // My button is 55 x 37 pixels, according to the FXML
testImageView.setFitHeight(37);
//testImageView.fitWidthProperty().bind(gridButton37.widthProperty()); // This didn't work either
//testImageView.fitHeightProperty().bind(gridButton37.widthProperty());
gridButton37.setGraphic(testImageView);
}
我一直在谷歌搜索几个小时,但我找不到一个似乎适用于此的“拉伸图像到父母”解决方案。有什么我想念的吗?
答案 0 :(得分:1)
btnTest.setMinSize(55, 37);
btnTest.setMaxSize(55, 37);
Image image = new Image("/view/images/someImage.png", btnTest.getWidth(), btnTest.getHeight(), false, true, true);
BackgroundImage bImage = new BackgroundImage(image, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, new BackgroundSize(btnTest.getWidth(), btnTest.getHeight(), true, true, true, false));
Background backGround = new Background(bImage);
btnTest.setBackground(backGround);
请参阅https://docs.oracle.com/javase/8/javafx/api/javafx/scene/layout/Background.html