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 :

Double Buffering ou BufferedImage ?


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Double Buffering ou BufferedImage ?
    Salut,

    Dans un JLayeredPane, un JPanel de fond affiche des graphiques et un panneau transparent supérieur porte un pointeur en graticule.

    Chaque déplacement du pointeur entraîne un appel à paintComponent du panneau de fond. Comme il n'est pas question de recalculer tous les graphiques, je les ai mis dans une BufferedImage qui est rapidement replacée à chaque rafraîchissement.

    Ne peut-on éviter cela (j'ai l'intention de diviser le panneau de fond en plusieurs sous-panneaux) et pourquoi le double buffering automatique est-il inopérant dans ce cas ?

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par janef
    Salut,

    Dans un JLayeredPane, un JPanel de fond affiche des graphiques et un panneau transparent supérieur porte un pointeur en graticule.

    Chaque déplacement du pointeur entraîne un appel à paintComponent du panneau de fond. Comme il n'est pas question de recalculer tous les graphiques, je les ai mis dans une BufferedImage qui est rapidement replacée à chaque rafraîchissement.

    Ne peut-on éviter cela (j'ai l'intention de diviser le panneau de fond en plusieurs sous-panneaux) et pourquoi le double buffering automatique est-il inopérant dans ce cas ?
    Le double-buffering permet de bufferiser 1 appel à paintComponent().
    Par exemple, si dans un paintComponent(), tu dessines un rectangle noir, puis un rectangle blanc par dessus, l'image vraiment dessinée sur l'écran sera le rectangle noir contenant le rectangle blanc, tu ne pourras pas voir que le noir.

    Si tu as des images complexes à calculer, il vaut mieux utiliser une BufferedImage que tu te contentes d'afficher dans paintComponent (paintComponent peut être appelé même si ton image n'a pas changé, alors inutile de recalculer). Et tu as une méthode qui modifie ta BufferedImage et qui repaint...

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par ®om
    Si tu as des images complexes à calculer, il vaut mieux utiliser une BufferedImage que tu te contentes d'afficher dans paintComponent (paintComponent peut être appelé même si ton image n'a pas changé, alors inutile de recalculer). Et tu as une méthode qui modifie ta BufferedImage et qui repaint...
    Vi, c'est bien ce que je fais déjà. Le problème est que BufferedImage n'est pas un composant qui accepte d'autres composants (ou alors j'ai pas compris).

    Si donc je souhaite subdiviser l'affichage en plusieurs panneaux gérés par un layout, il faut tout fabriquer et gérer à la paluche dans la BufferedImage au lieu d'utiliser des entités swing déjà existantes.

Discussions similaires

  1. [GDI+] Double buffer
    Par sebbb dans le forum MFC
    Réponses: 3
    Dernier message: 24/05/2005, 15h19
  2. [MFC] Scinttillement vs Double buffering
    Par DamessS dans le forum MFC
    Réponses: 9
    Dernier message: 07/04/2005, 09h01
  3. Réponses: 1
    Dernier message: 04/04/2005, 11h19
  4. Réponses: 7
    Dernier message: 03/08/2004, 16h33
  5. [Exception]Double buffering & NullPointerException
    Par Seiya dans le forum API standards et tierces
    Réponses: 25
    Dernier message: 09/07/2004, 18h41

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