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

Graphisme Java Discussion :

repaint() d'une seule couche de données


Sujet :

Graphisme Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut repaint() d'une seule couche de données
    Bonjour,

    Je cherche une solution pour optimiser les temps de rafraîchissement du contenu d'une de mes JInternalFrame.

    Dans cette frame, je dessine plusieurs couches graphiques :
    - une grande image de fond
    - une couche de formes
    - une 2ème couche de formes aux propriétés différentes
    - ...
    - une petite image en avant-plan

    J'aimerai savoir s'il est possible de faire en sorte que seule la couche désirée soit repainte?

    Par exemple, si on a déplacé la petite image en avant-plan, serait-il possible de redessiner seulement la petite image, sans avoir à redessiner l'image de fond et toutes les formes?

    J'étais en train de regarder le fonctionnement du glasspane, mais ça ne semble pas faire ce que je veux... Ou alors j'ai mal compris son fonctionnement...

    Donc si vous connaissez un mécanisme qui permet de faire ça, je suis preneur!

  2. #2
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void repaint(int x,
                        int y,
                        int width,
                        int height);

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Citation Envoyé par let_me_in
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void repaint(int x,
                        int y,
                        int width,
                        int height);
    Merci, mais j'ai quand même bataillé avant de poster sur le forum, donc j'ai déjà essayé ça (et bien d'autre chose)...
    Et ça ne répond pas vraiment à ma question : j'aimerai savoir s'il est possible de ne redessiner qu'une seule couche graphique sans avoir à redessiner tout ce qu'il y a en dessous.

  4. #4
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Non tu ne peux pas faire ce que tu veux. C'est bien la l'interet de repaint(x, y, w, h) qui limite le dessin des "couches" du dessous.

  5. #5
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Ok, donc ça sert à rien que je cherche une solution qui n'existe pas...
    Merci beaucoup!

    Problème résolu... (enfin, je me comprends )

  6. #6
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Au fait, je tenais à rajouter une réponse ici.
    J'ai trouvé d'où venait le ralentissement du rendu graphique de mon appli, qui m'a poussé à écrire ce post. Alors comme je suis gentil, je vous la donne!

    1) l'utilisateur pouvait déplacer des formes sur une image de fond.
    2) à chaque déplacement, je faisais un repaint() de toute mon image et je retraçais toutes les formes.
    3) le dessin des formes se faisait via l'appel d'une méthode draw() dans laquelle j'avais cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g2d.setStroke(new BasicStroke(shapeThickness, BasicStroke.CAP_ROUND, 
        BasicStroke.JOIN_MITER, 10.0f, shapeStyle, 1));
    4) dans le cas de base, j'avais défini shapeStyle = {1.0, 0.0} afin d'avoir un trait plein

    Or ERREEEEEEEEUUURRR!!!
    C'est ce style qui me faisait tout ramer... En utilisant un style "null" ou du type {2000, 0}, ça marche nickel!

    Fallait le trouver quand même...
    Enfin, du coup, mon problème est réellement résolu!!!

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

Discussions similaires

  1. [MySQL] afficher une seule fois les données redondantes
    Par ginger4957 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/05/2009, 17h04
  2. Réponses: 6
    Dernier message: 02/03/2009, 09h42
  3. Réponses: 8
    Dernier message: 23/09/2008, 12h20
  4. [Jasper Report] Graphique sur une seule ligne de données
    Par RR instinct dans le forum Jasper
    Réponses: 3
    Dernier message: 13/11/2007, 12h02
  5. Réponses: 18
    Dernier message: 10/02/2005, 14h22

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