lenteur de scroll [Java] - Java - Programmation
Marsh Posté le 04-12-2008 à 16:29:08
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).
Marsh Posté le 04-12-2008 à 15:24:00
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 :
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 !