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

2D Java Discussion :

[DESSIN] String sur une image (Mauvaise Comprehension)


Sujet :

2D Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 135
    Par défaut [DESSIN] String sur une image (Mauvaise Comprehension)
    Bonjour,

    Tout d'abord je tiens a dire que j'ai chercher du coté de la faq et sur le site mais j'ai un probleme de compréhension.

    Bon voila en fait je fais un pacman actuellement et je voudrais afficher le string "Pause" lorsque l'on déclenche une pause.

    Pour dessiner le labyrinthe plus les personnages j'ai redefini la méthode paint de mon composant graphics (Jpanel).

    Voici la méthode paint() :

    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
    public void paint(Graphics g) {
    		// Pour faire du double-buffering
    		if (graph == null){
    			Dimension taille = Toolkit.getDefaultToolkit().getScreenSize();
    			img = createImage(taille.width, taille.height);
    			graph = img.getGraphics();
    		}
     
    		// Effacement de l'ecran
    		graph.setColor(Color.BLACK);
    		graph.fillRect(0, 0, getWidth(), getHeight());
     
    		this.laby.dessiner(graph); 
     
    		this.pac.dessiner(graph);
     
    		for(int i=0;i<super.listeFantome.size();i++)
    		{
    			((Fantome) super.listeFantome.get(i)).dessiner(graph);
    		}
     
    		// Affichage de l'image 
    		g.drawImage(img,0,0,this);		
    	}
    Voila bon tous ce passe bien l'image est correctement affichée et elle est rafraichie par un thread .

    Lors de l'action pause je stop tous les threads des personnages.

    Jusque la tout fonctionne bien.

    Maintenant je voudrais afficher "pause" lorsque je declenche l'action pause.

    Pour cela j'ai besoin d'accéder au composant graphics et je ne souhaite pas modifier le code de paint().

    je c que je dois mettre ca comme code selon la faq java)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void gestionPause()
    	{	
    		pause=!pause;
     
    		if(pause)
    		{
    /** Ecriture dans une image 'img' */
    Graphics2D g2d = (Graphics2D)img.getGraphics();
    g2d.drawString("HelloWord",x,y);
     
    		}
    	}
    Voici mon thread :
    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
    	public void run() {
    		while (t == Thread.currentThread()) {
    			if(!pause)
    			{
    				try {
    					this.repaint();
     
    					this.gestionEtatSpecial();
     
    					this.gestionRencontre();
     
    					Thread.sleep(50);
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    					break;
    				}
    			}
    		}
    	}
    mais ca marche pas.

    Je crois que ca se voit bien que je comprend pas trop la logique de l'affichage puisque je n'arrive pas m'expliquer clairement...

    Merci d'avance ![/i]

  2. #2
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    Quand tu récupère l'objet "Graphics" de l'image et que tu écris dessus, tes opération ne sont pas "retranscrites" directement à l'écran, tu fais ça dans le "back buffer", le problème est que, dans ta méthode "paint", tu efface le contenu de l'image ("drawRect"). donc, en gros, ce que tu fais c'est pas très bon... tu écris bien dans ton image mais avant de l'afficher, tu la réinitialise...

  3. #3
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Hum Je suis d'accord avec bidi et Xavlours (sur l'autre post... que tu aurais d'ailleurs intérêt à "fusioner" avec celui-ci...).
    Par contre je ne comprends pas trop pourquoi tu ne veux pas le faire dans le méthode paint()... puisque c'est elle qui dessine sur ton écran !
    Y-a-t'il une raison particulière ?

    Bref, le mieux pour moi reste de faire le dessin de ta chaine de caractères dans ta méthode paint().

    PS: Je crois que ce post serait mieux sur le forum "Interfaces Graphiques Java"...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 135
    Par défaut
    ah oué roh decidemment c vrai jaurais du le mettre dans interface graphique c'est lhabitude d'aller sur ce forum

    Pour fusionner comment on fais? je cherche a supprimer mes doubles post mais je n'arrive pas...

    Sinon la raison est expliqué dans un clone...

  5. #5
    Membre expérimenté Avatar de bidi
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 262
    Par défaut
    ou alors tu remplis ton image dans l'ordre. tu sors du paint tout ce qui peut être sorti, tu écris tout dans le back buffer et tu ne fais qu'un drawImage dans ton paint... c'est plus logique comme ça pour moi...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 135
    Par défaut
    ah oué d'accord je crois avoir compris....

    J'avais pas saisi l'histoire du double buffering....

    okok comme ca ca me parait bien (comme dit bidi)

    je vais aller au coin si ca continue moi je fais vraiment que des betises aujourdhui

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 135
    Par défaut
    Voila ce que j'ai dit dans un autre post

    Citation Envoyé par djsbens
    oups désolé pour le double post ca a merdé la premiere fois :s

    merci de ta réponse.

    Mais en fait il me faudrait faire comme je dis cad ne pas le faire dans paint() car en fait je dois aussi lorsque pacman mange un fantome afficher le nombre de point gagné ("100") et donc je peux pas refaire ca dans paint() enfin c pas terrible au niveau du code je trouve.

  8. #8
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Pour fusionner comment on fais?
    Exactement comme tu l'as fait... en faisant des citations, et en mettant un petit post explicatif de cloture dans tes autres sujets... avec (au top) un lien vers ce sujet. (je sais, fusionner était un bien grand mot... )

    Sinon pour supprimer un sujet il me semble qu'il te suffit d'éditer ton premier post dans ce sujet et de le supprimer (croix en haut à droite de ton message))

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 135
    Par défaut
    ok merci.

    Bon je vais tester tout ca. mais je pense avoir bien compris comment je vais faire...

    Je vais utiliser la méthode de bidi
    ou alors tu remplis ton image dans l'ordre. tu sors du paint tout ce qui peut être sorti, tu écris tout dans le back buffer et tu ne fais qu'un drawImage dans ton paint... c'est plus logique comme ça pour moi...
    Merci encore et désolé du derangement!

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

Discussions similaires

  1. Dessiner sur une image
    Par alex6891 dans le forum Java ME
    Réponses: 1
    Dernier message: 16/04/2006, 02h45
  2. [Image]Dessiner des rectangles sur une image
    Par navona dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 09/03/2006, 22h51
  3. Déplacer, zoomer, dessiner (sur) une image
    Par charlito dans le forum 2D
    Réponses: 4
    Dernier message: 22/02/2006, 01h58
  4. [Servlet] [Image] Dessiner sur une image
    Par gaia_dev dans le forum 2D
    Réponses: 5
    Dernier message: 01/09/2004, 17h11

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