Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1427 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] lenteur de scroll

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] lenteur de scroll

n°1821968
Facewindu
Posté le 04-12-2008 à 15:24:00  profilanswer
 

Bonjour j'aimerais avoir votre avis :
 
Je crée une renderedImage qui fait 400*2000 pixels.
Elle se situe dans un scrollPane, et le scroll se fait normalement. La zone affichée de l'image doit correspondre à peu près à 400*600 pixels. (si vous suivez bien, il y a une barre de scroll verticale à cause des 2000 pixels, mais pas de barre horizontale à cause des 400 pixels qui rentrent dans l'écran)
 
Ensuite je fais un zoom, genre x5, on a donc une image de 2000*10 000 pixels.
Et là ca merde. La zone affichée doit représenter 1600*600 pixels environ, à ça scrolle lentement.
 
Le PC que j'utilise n'est pas une foudre de guerre.
A mon avis, ça ne vient pas du fait que l'image est énorme (une raison pour cela : quand je redimensionne ma fenêtre pour que la zone affichée à l'écran prenne moins de pixels, ça va beaucoup mieux)
 
Donc je pense que ça vaut le coup d'essayer le double buffering hardware, non ?
J'ai lu les tutos de Sun et une FAQ sur le net qui explique dans un exemple simple comment implementer cela, mais ca me parait super compliqué, surtout quand ton prog est déjà fini.
 
En gros je veux juste que quand Java doit dessiner l'image (à la rigueur tout mon scrollPane) il utilise un double buffer hardware pour que ca ne ralentisse pas.
Je veux pas l'implémenter sur tout mon prog, ca sert à rien.
 
Il y a surtout un truc qui m'échappe :
Dans les exemples que j'ai vu, il y a souvent ça :
 

Code :
  1. mainFrame.createBufferStrategy(numBuffers);
  2.             BufferStrategy bufferStrategy = mainFrame.getBufferStrategy();
  3.                 for (int i = 0; i < numBuffers; i++) {
  4.                     Graphics g = bufferStrategy.getDrawGraphics();
  5.                     if (!bufferStrategy.contentsLost()) {
  6.                         // do what you want with g (draw, setColor, etc etc)
  7.                         bufferStrategy.show();
  8.                         g.dispose();
  9.                     }
  10.                }


 
Je n'utilise pas d'objet Graphics moi.
J'utilise setSample sur une tiledImage, que je transforme en renderedImage.
Du coup je suis un peu paumé, si quelqu'un qui connait le schmilblick peut m'aider, ca serait génial.
d'avance merci !
 

mood
Publicité
Posté le 04-12-2008 à 15:24:00  profilanswer
 

n°1822041
_iOn_
Substrat pensant
Posté le 04-12-2008 à 16:29:08  profilanswer
 

Le double-buffering ne t'aidera pas à rendre ton programme plus rapide, ça sert à le faire paraître plus fluide en évitant de montrer les opérations de peinture successives, mais en fait c'est plus lent que de peindre directement ton image.
 
Enfin bon si tu veux scroller une image de 1600x600, tu es condamné à la lenteur je pense (mais ma dernière expérience sur le sujet était sur pentium III 500mhz, donc c'est à vue de nez). Après je n'ai pas trop compris, quand tu zoomes, la zone d'affichage change de taille ou pas ? Si tu as toujours 400x600 pixels, ça ne devrait pas être beaucoup plus lent que sans zoom, à moins que ton programme soit codé avec les pieds (par exemple tu fais des calculs qui ne te servent pas, genre tu génères une grande image dont tu ne peints qu'une petite partie).


---------------
Any sufficiently complex bug is indistinguishable from magic.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] lenteur de scroll

 

Sujets relatifs
CMS java >> Magnolia[java] super class et constructeur
[java] classe abstraire, constructeur sans argument[JAVA/JSP] gestion des doublons
pb java j2ee[JAVA] recherche un framework de développement RAD
Accès Application Web Javaforeach java/jsp
Problème java.util.HashMap$KeyIterator@157f0dc[JAVA] Problème de mise en page
Plus de sujets relatifs à : [Java] lenteur de scroll


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR