logo Homepage
Pages: [1]
  Imprimer  
Auteur Fil de discussion: [java] chargement/Affichage d'image  (Lu 3893 fois)
the lsd
Administrateur

Profil challenge

Classement : 190/54343

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« le: 12 Décembre 2007 à 09:21:50 »

Hello everybody !

Bon je suis encore sur Java, j'ai un autre probleme sur (je laisse le suspense arriver)...
les images !
J'arrive a charger l'image avec un getImage, j'ai bien un paint(Graphics g) qui devrait (si j'ai bien compris) afficher l'image chargée

Voila le code :

Code:
import java.awt.* ;
import java.awt.image.* ;
import java.awt.Toolkit.* ;

public class storyboard {

private Frame f ;
private Canvas can ;
private int i = 0 ;
private Image img ;
private ImageObserver imobs ;

public Image suivant ()
{
img = Toolkit.getDefaultToolkit().getImage("image1.jpg");
return img ;
}

public storyboard()
{
f = new Frame ("Storyboard") ;
can = new Canvas () ;
f.setLayout (new FlowLayout()) ;
can.setSize (200, 200) ;
f.add ("center", can) ;
f.setSize (300, 300) ;
f.show() ;
}

public static void main (String[]args)
{
storyboard st = new storyboard() ;
st.suivant() ;

}

public void paint(Graphics g)
{
g.drawImage (img, 20, 20, can) ;
        g.fillOval(20, 60, 10, 10);
}

}

Je vois pas du tout ou peut etre l'erreur...
Enjoy

The lsd

PS : je n'ai pas eu le temps de continuer le prog du topic précédent (sur les couleurs), je le continuerais quand les cours seront moins fatiguants
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
the lsd
Administrateur

Profil challenge

Classement : 190/54343

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« #1 le: 12 Décembre 2007 à 13:06:09 »

Bon je m'auto reponds, j'ai trouvé une solution, en créant une deuxième classe et en bidouillant un peu.

Code:
import java.awt.* ;
import java.awt.image.* ;
import java.awt.Toolkit.* ;

public class storyboard {

private Frame f ;

private int i = 0 ;
private Image img ;
private ImageObserver imobs ;

public Image suivant ()
{
img = Toolkit.getDefaultToolkit().getImage("image1.jpg");
//imobs.imageUpdate (img, 2, 0, 0, 100, 100) ;
return img ;
}

public storyboard()
{
f = new Frame ("Storyboard") ;
f.setLayout (new BorderLayout()) ;
f.add ("Center", new image()) ;
f.setSize (300, 300) ;
f.show() ;
}

public static void main (String[]args)
{
storyboard st = new storyboard() ;
st.suivant() ;

}

public void paint(Graphics g)
{
if (img != null)
{
g.drawImage (img, 20, 20, imobs) ;
        }
        System.out.println ("lihoipuhoiguh") ;
        g.fillOval(20, 60, 10, 10);
}

}

Code:
import java.awt.* ;
import java.awt.image.* ;
import java.awt.Toolkit.* ;

public class image extends Canvas{

private Image img ;

public image()
{

setSize (300, 300) ;
img = Toolkit.getDefaultToolkit().getImage("image1.jpg");
}

public void paint(Graphics g)
{
g.drawImage (img, 0, 0, this) ;
       // repaint() ;
}

}

Je laisse le topic pour l'instant, vu que j'aurais certainement encore besoin d'un coup de pouce pour ce projet

Enjoy

The lsd
Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
Chilly
Relecteur

Profil challenge

Classement : 266/54343

Membre Senior
*
Hors ligne Hors ligne
Messages: 307


Voir le profil
« #2 le: 12 Décembre 2007 à 18:34:24 »

Tiens, une question me vient en survolant ton code...

Pour les imports, ne vaut-il pas mieux n'importer que les classes utiles et pas les packages complets ?
Journalisée

Non au langage SMS !!! http://sms.informatiquefrance.com
micka13
Profil challenge

Classement : 3455/54343

Membre Junior
**
Hors ligne Hors ligne
Messages: 86


Voir le profil
« #3 le: 12 Décembre 2007 à 20:03:36 »

C'est une bonne question !Pour moi je ne vois vraiment pas la difference , mis a part une compilation plus lente car le compilateur doit chercher dans tout le repertoire si la classe est presente.
Enfin j'aimerai bien que quelqu'un de calé reponde  .
Journalisée
the lsd
Administrateur

Profil challenge

Classement : 190/54343

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 3096

poulping for fun & profit


Voir le profil WWW
« #4 le: 12 Décembre 2007 à 21:02:15 »

Ben moi, betement, je dirais que ca ne change rien a l'éxécution, java n'importe que les classes dont il a besoin.

Sinon, j'ai maintenant un deuxième probleme, qui est en lien avec le premier.
Je veux faire en sorte d'afficher une image, attendre , quelques secondes, puis afficher une autre image.
J'ai donc trouver les méthodes sleep et wait, respectivement des classes Thread et Object pour l'attente.
Sauf que, les méthodes font un sleep sur tout le programme au démarrage. Alors que moi, je veux que ca ne fasse une pause qu'apres la premiere image.
J'appelle les méthodes comme ca :
imgclass.suivant() ;
imgclass.attendre();
imgclass.suivant();

Voila les deux méthodes en question :

Code:
	public Image suivant()
{
i++ ;
img = Toolkit.getDefaultToolkit().getImage("image"+i+".jpg");
this.repaint() ;
return img ;
}

public void attendre ()
{
try
{
Thread.sleep (5000) ;
}
catch (InterruptedException e) {
            e.printStackTrace();
        }
}

Enjoy

The lsd

Edit : J'ai oublié de préciser, mais seul l'affichage des images doit etre mis en pause, le reste du programme doit continuer a tourner (comment ca je suis chiant :p)
« Dernière édition: 12 Décembre 2007 à 21:09:28 par the lsd » Journalisée

Newbie Contest Staff :
The lsd - Th3_l5D (IRC)
Statut :
Administrateur
Citation :
Cartésien désabusé : je pense, donc je suis, mais je m'en fous !
neoflo
Profil challenge

Classement : 8123/54343

Membre Complet
***
Hors ligne Hors ligne
Messages: 171


Voir le profil WWW
« #5 le: 13 Décembre 2007 à 14:09:34 »

Attention, les import Java sont très différents des include en C/C++.

Déjà, les imports java ne changent rien sur le fichier compilé, ça sert uniquement à indiquer la classe que l'on souhaite utiliser sans avoir à tapper tout (java.io.InputStream par exemple). On peut donc n'utiliser aucun import mais tapper java.io.InputStream partout où on en aurait besoin.
Et donc, le compilateur ne parse jamais ces classes mais connait les prototypes de leurs méthodes (de toute façon, elles sont en général dans des bibliothèques jar)

Il vaut mieux en général n'inclure que les classes dont on a besoin (même si ça ne change pas grand chose), ce qui ne pose pas de problème si vous utilisez un EDI digne de ce nom qui sait automatiquement réorganiser les imports.

Au passage, on définit en général les classes avec une majuscule.
Journalisée

Pages: [1]
  Imprimer  
 
Aller à: