почему JavaFX автоматически изменяет размеры изображений? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть изображение 200x200.

enter image description here

Я загружаю вышеуказанное изображение в ImageView, но когда я запускаю приложение JavaFX, изображение выглядит больше , Я сделал снимок экрана и открыл его в Paint. NET для подтверждения.

enter image description here

Почему изображение теперь 348x348? Я попробовал все, что мог придумать, чтобы ограничить ширину и высоту до 200x200 (пример кода ниже). Эта картинка с автоматически измененным размером - самая близкая вещь, которую я смог найти в связи с моим вопросом, но я не занимаюсь разработкой для Android.

public class ImageTest extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Pane pane = new Pane();
        pane.setPrefHeight(200);
        pane.setPrefWidth(200);
        pane.setMaxHeight(200);
        pane.setMaxWidth(200);

        Image image = new Image(getClass().getClassLoader().getResourceAsStream("images/red square.png"));
        ImageView imageView = new ImageView( image );
        imageView.setImage(image);
        imageView.setFitHeight(200);
        imageView.setFitWidth(200);
        imageView.setPreserveRatio(true);
        imageView.setSmooth(false);
        pane.getChildren().add(imageView);

        Scene scene = new Scene( pane, 200, 200 );
        stage.setScene(scene);
        stage.show();
    }

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

}

1 Ответ

1 голос
/ 17 апреля 2020

с изображением в загрузке

Вы можете попробовать загрузить изображение с заранее заданным размером. По умолчанию он не будет сохранять соотношение width:height: вы можете сделать это с помощью

Image image = new Image("images/red square.png", 200, 200, true, false);

, информацию о котором можно найти в javadocs


с просмотр изображения использование:

ImageView imageView = new ImageView("images/red square.png");
imageView.setPreserveRatio(true)
...