6
votes

Comment obtenir une largeur / hauteur de l'image affichée dans JavaFX ImageView?

J'ai besoin d'obtenir largeur / hauteur de l'image affichée dans iMegview et comparez-la à la taille de l'image orginale qui est dans imageview.GetImage (). GetWidth () / getheightth () et écouter les modifications si l'utilisateur redimensionne le formulaire GUI d'application. < P> Je reçois cette taille à partir de imageview.fitwidthProperty () et similaire pour la hauteur, mais je reçois la taille de l'image de l'image à l'intérieur: Entrez la description de l'image ici

Je reçois la taille du bleu qui est imageview mais j'ai besoin de la taille de l'image affichée (vert). Comment puis-je l'obtenir en tant que propriété pour écouter lorsque l'utilisateur redimensionner l'application de fenêtre (Vert modifier également la taille, mais il semble avoir une taille max et min afin qu'il arrête de redimensionner avec imageView quand il est max ou min).

i Utilisez cette propriété pour calculer% de taille d'image orginale en bas à droite en dessous du rectangle bleu.

est-il possible?

E: ci-dessous est FXML de cet onglet: < Pré> xxx


0 commentaires

3 Réponses :


2
votes

~> 1)

Le fait que l'image ne redimensionne pas pour couvrir tous les imageview a à voir avec la méthode Preserveratio.Si vous voulez être couvert setpreserveratio (FALSE); avec une combinaison de setsmooth (true);

~> 2)

La bordure verte est la taille de l'image d'origine.

~> 3)

avant d'ajouter l'image au imageview Vous pouvez faire: xxx

et c'est La taille d'origine de l'image.

comme pour la taille de l'image lorsqu'il est affiché à l'intérieur de l'image : xxx

Pour la taille de imageview à l'intérieur de la scène (la bordure bleue de votre question): xxx

imageview classe a propriétés pour ce qui précède.


2 commentaires

imageview.getfitwidth () ne fonctionne pas. Mais j'ai trouvé ce dont j'avais besoin dans imageview.boundsinparentProperty () alors résolu.


Même ici, vous devez utiliser: listview.boundsinparentProperty (). Getwidth ()



0
votes

Je ne suis pas au courant d'une propriété que vous pourriez utiliser directement pour obtenir aux chiffres que vous souhaitez, mais vous pourriez proposer cela comme une amélioration pour une future version de JavaFX.

Ce que vous pouvez faire maintenant est d'écrire du code qui suit toutes les protégées de l'image d'image qui ont une influence sur la taille de l'image affichée, puis calculez vous-même la taille affichée vous-même. Cela ne semble pas trop compliqué pour moi.


0 commentaires

2
votes

Lorsque le imageview code> est défini pour préserver le rapport de format, il faut calculer les dimensions réelles à la main. Au moins je n'ai pas trouvé d'autre manière.

double aspectRatio = image.getWidth() / image.getHeight();
double realWidth = Math.min(imageView.getFitWidth(), imageView.getFitHeight() * aspectRatio);
double realHeight = Math.min(imageView.getFitHeight(), imageView.getFitWidth() / aspectRatio);


0 commentaires