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

Java ME Discussion :

Rafraichir un Canvas...


Sujet :

Java ME

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut Rafraichir un Canvas...
    Bonsoir,

    J'ai créé une classe MyCanvas qui hérite de GameCanvas d'une part.
    Et j'ai une classe MyMidlet qui hérite de MIDlet d'autre part.

    Dans MyCanvas, voici ma méthode paint qui dessine le texte Test si _nivo vaut 0 (au début de mon appli) ou qui dessine un quadrillage sur la totalité de l'écran :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    public void paint(Graphics g) {
            g = getGraphics();
            if(_nivo == 0){ 
                g.setColor(255,0,0);
                g.drawString("Test",Width,Height,Graphics.SOLID);
            } 
            else {  
                g.setColor(0,0,0);
                for (int x = 0; x < _width; x+=_space) {
                    // Dessin des colonnes
                    g.drawLine(x,0,x,_height);
                }
                for (int y = 0; y < _height; y+=_space){
                    // Dessin des lignes
                   g.drawLine(0,y,_width,y);
                }
            }
            flushGraphics();
        }
    Le résultat est bien là (les dessins sont bien représentés), seulement au début _nivo vaut 0 donc mon appli affiche "Test" en rouge mais dès que _nivo vaut 1 par exemple, la grille s'affiche bien mais PAR-DESSUS le texte en rouge qui n'a pas été effacé !

    Voilà mon réel souci car j'aimerais effacer chaque écran proprement avant de redessiner dessus, alors si vous connaissez un moyen, merci de m'en faire part !
    PS: étonnant quand même que la méthode flushGraphics ne marche pas...

    Merci,

    Alex

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 219
    Points : 44
    Points
    44
    Par défaut
    Personne n'aurait une petite astuce pour m'aider à avancer ?
    Merci

  3. #3
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour,

    Je ne suis pas un spécialiste de Midlet ou de midinettes mais ton code me paraît erroné.

    - Es-tu sûr que tu doives "sur-écrire" la méthode paint?

    - Pourquoi fais-tu un getGraphics quand la méthode paint te fournit cette valeur?

    A mon avis, il faut coder de cette manière (sans garantie):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // Premier Panneau
       Graphics g = getGraphics();
       g.setColor(255,255,255);
       g.fillRect( 0, 0, getWidth(), getHeight() );
       g.setColor(255,0,0);
       g.drawString("Test",Width,Height,Graphics.SOLID);
     
     
       /* Dans la méthode où tu changes de niveau */
       /* Efface l'écran: il se peut qu'il existe un meilleur moyen */
       Graphics g = getGraphics();
       g.setColor(255,255,255);
       g.fillRect( 0, 0, getWidth(), getHeight() );
       g.setColor(0,0,0);
       for (int x = 0; x < _width; x+=_space) {
                    // Dessin des colonnes
                    g.drawLine(x,0,x,_height);
                }
                for (int y = 0; y < _height; y+=_space){
                    // Dessin des lignes
                   g.drawLine(0,y,_width,y);
                }
        }
        flushGraphics();

  4. #4
    HNT
    HNT est déconnecté
    Membre actif Avatar de HNT
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    448
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 448
    Points : 293
    Points
    293
    Par défaut
    Pour moi ce que tu dois faire ressemblerai plutot à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public void paint(Graphics g) 
    {
            g.setColor(255,255,255);//couleur de fond d'écran
            //efface l'écran
            g.fillRect(0, 0, this.getWidth(), this.getHeight());
            if(_nivo == 0)
            { 
                g.setColor(255,0,0);
                g.drawString("Test",Width,Height,Graphics.SOLID);
            } 
            else 
            {  
                g.setColor(0,0,0);
                for (int x = 0; x < _width; x+=_space) 
                    g.drawLine(x,0,x,_height);
                for (int y = 0; y < _height; y+=_space)
                   g.drawLine(0,y,_width,y);
            }
            flushGraphics();
        }
    Essaye avec ça et dit nous quoi ...

Discussions similaires

  1. rafraichir un Canvas + une abération :/
    Par rezuz dans le forum Tkinter
    Réponses: 4
    Dernier message: 01/07/2010, 06h34
  2. Timage et Canvas??
    Par vanack dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/04/2007, 11h38
  3. Comment mettre le curseur d'un Memo sur le Canvas d'une Form ?
    Par julie20 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/08/2003, 13h24
  4. [Canvas] Listbox, couleur et multiselect
    Par rbag dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/09/2002, 13h02
  5. Réponses: 2
    Dernier message: 17/05/2002, 20h37

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