IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[debutant]disparition d'une image resizée


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 15
    Par défaut [debutant]disparition d'une image resizée
    Bonjour,

    j'ai un Jpanel contenant des images.
    pour l'instant mon image s'affiche de la manière suivante (dans la fonction paintComponent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.drawImage(personnage, pos_personnage.x, pos_personnage.y, obs);
    personnage étant mon image.(class Image)

    Mon problème: je veux resizer l'image, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g.drawImage(personnage.getScaledInstance(with,height,Image.SCALE_DEFAULT), pos_personnage.x, pos_personnage.y, obs);
    plus aucune image ne s'affiche.

    j'ai loupé qq chose?
    que dois-je faire pour que l'image s'affiche?
    merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    tu as vérifié les valeurs de with,height ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 15
    Par défaut
    oui, se sont des valeurs en dures....

  4. #4
    Membre expérimenté Avatar de dazz_x
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    269
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 269
    Par défaut
    il me semble que l'utlisation de getScaledInstance() est déconseillé mais déconseillé du genre vivement déconseillé du fait de sa lenteur (tu dois pouvoir trouver ce genre d'information dans quelques posts de gfx(Romain Guy) ou sur son blog). Il faut utiliser une des versions de drawImage() qui doit permettre de faire le scale à la volée... En tous cas, tu peux utiliser une AffineTransform que tu passes à drawImage().
    Voilà pour ce que j'en dis !

  5. #5
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Oui, en utilisant cette méthode :
    Citation Envoyé par javadoc
    abstract booleandrawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
    Le Graphics se charge de faire la mise à l'échelle pour que l'image rentre dans un rectangle de taille width*height.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Également en général on passe la valeur null en tant qu'ImageObserver.
    De plus le résultat final de cette opération de redimensionnement peut être paramétré via certains RenderingHints :
    - clé principale à utiliser RenderingHints.KEY_INTERPOLATION
    - valeur RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR : en général la valeur par défaut, redimensionnement pixélisé, rapide.
    - valeur RenderingHints.VALUE_INTERPOLATION_BILINEAR : recommandée pour obtenir des images lissées.
    - valeur RenderingHints.VALUE_INTERPOLATION_BICUBIC : meilleurs résultats en théorie (quoique parfois la différence soit peu voir pas visible d'avec la méthode bilinéaire ), mais l'opération est plus lente.

    Sinon Gfx a également présenté une méthode de redimensionnement par divisions successives d'échelle par 2 récemment, il suffit de rechercher sur le forum.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Debutant - Mailfactory : encoder une image
    Par mstrup dans le forum Ruby
    Réponses: 0
    Dernier message: 26/04/2009, 01h54
  2. Debutant,comment afficher une image dans un Jpanel
    Par dilamax_1 dans le forum Graphisme
    Réponses: 1
    Dernier message: 27/04/2008, 16h05
  3. Réponses: 1
    Dernier message: 02/07/2007, 10h16
  4. Réponses: 14
    Dernier message: 20/02/2006, 00h26
  5. [debutant]Chargement d'une image de mes documents
    Par reineville dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/03/2004, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo