Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno JavaFX - ImageView - resize without change aspect ratio

Dobrý den,

Potřeboval jsem získat, při změně výšky obrázku, jeho šířku pro zachování poměru stran.

Zjistil jsem, že by k tomu měla sloužit metoda setPreserveRatio(true);

Jenže když napíšu

ImageView image = new ImageView(new Image("file:image/image.png"));
image.setPreserveRatio(true);
image.setFitHeight(100);
int height = (int) image.getFitHeight();
int width = (int) image.getFitWidth();

tak width je 0;

Jak to mám, prosím vás, napsat správně?

Děkuji.

Předmět Autor Datum
Co je napsané v dokumentaci, prostě nefunguje. Ať zadám pouze šířku, pouze výšku nebo obě, ke změně…
MichalDM 23.10.2017 23:05
MichalDM
Asi jsi blbe hledal, v dokumentaci je tohle: import javafx.application.Application; import javafx.…
MaSo 24.10.2017 08:42
MaSo
Aha, takže jsem byl blízko. ImageView image = new ImageView(new Image("file:")); image.setFitHeight… poslední
MichalDM 26.10.2017 22:59
MichalDM

Asi jsi blbe hledal, v dokumentaci je tohle:


import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class AA extends Application {

    @Override public void start(Stage stage) {
        Image image = new Image("buce.jpg");

        ImageView imageView = new ImageView();
        imageView.setImage(image);
        imageView.setFitHeight(300);
        imageView.setPreserveRatio(true);
        imageView.setSmooth(true);
        imageView.setCache(true);

        Group root = new Group();
        Scene scene = new Scene(root);
        scene.setFill(Color.BLACK);
        HBox box = new HBox();
        box.getChildren().add(imageView);
        root.getChildren().add(box);

        stage.setTitle("ImageView");
        stage.setWidth(800);
        stage.setHeight(600);
        stage.setScene(scene);
        stage.sizeToScene();
        stage.show();
    }

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

...a to samozrejme funguje.

Aha, takže jsem byl blízko.

ImageView image = new ImageView(new Image("file:"));
image.setFitHeight(100);
image.setPreserveRatio(true);
stage.setScene(new Scene(new Pane("file:image/image.png")));
stage.show();

Jenže ta šířka se nastaví až po zobrazení stage.

Každopádně díky.

Zpět do poradny Odpovědět na původní otázku Nahoru