javafx拉伸图像填充按钮?

时间:2017-12-22 03:25:32

标签: image button javafx

我正在使用Java / JavaFX编写一个“星际迷航”游戏。我的想法是主游戏画面是一个10x10的按钮GridPane。所有游戏部件(企业,克林贡人,行星等)都会在按钮中显示为图标。这样,您可以单击空间对象来选择它,扭曲它,拍摄它等等:

My Game Image Concept

当然,这完全取决于能否将我的小星舰图像分配到适当的按钮。我已经弄清楚如何将背景应用于按钮,但是当我应用图像时,合身效果并不理想。这是我到目前为止的游戏截图:

My game interface thus far

“企业”形象排序适合......但不是真的。必须有一种方法来拉伸船只以适应按钮 完全 ,但我还没有找到它。我还必须找到一种方法在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);
}

我一直在谷歌搜索几个小时,但我找不到一个似乎适用于此的“拉伸图像到父母”解决方案。有什么我想念的吗?

1 个答案:

答案 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