didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
3 mars 2007 à 23:02
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
4 mars 2007 à 14:41
Bonjour a tous.
J'ai une classe qui herite de JWindow.
Je veux afficher plusieurs images les unes apres les autres a l'interieur.
voila le code que j'ai fait:
static BufferedImage[] IMG = null;
public int NumImage = 0;
public PleinEcran(){
//Parametres de la fenetre
this.setSize(1000, 1000);
this.setAlwaysOnTop(true);
this.setLocationRelativeTo(null);
//On recupere et enregistre les images de l'animation
if (IMG == null)
IMG = readGifImages("ChargementWindows.gif");
//On lance le processus qui est sancer afficher les images les unes apres les autres
Thread Afficher = new Thread(){
public void run(){
while(true){
try{
sleep(300);
repaint();
}catch(Exception ex){}
}
}
};
Afficher.start();
}
public void paint(Graphics g){
if(IMG[NumImage].getColorModel().hasAlpha()){
try{
Robot robot = new Robot();
BufferedImage fond = robot.createScreenCapture(getBounds());
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(fond,0);
tracker.waitForAll();
g.drawImage(fond, 0,0,null);
}catch(Exception e){e.printStackTrace();}
}
g.drawImage((Image)IMG[NumImage],0,0,null);
NumImage ++;
}
public static BufferedImage[] readGifImages(String f) {
BufferedInputStream in = null;
//stream image
ImageInputStream stream = null;
try{
in = new BufferedInputStream(new FileInputStream(new File(f)));
stream = ImageIO.createImageInputStream(in);
}catch (IOException e) {
return null;
}
//reader d'image'
ImageReader r=getReader("GIF");
if (r==null) return null;
//tableau dynamique des images
ArrayList img = new ArrayList();
try{
r.setInput(stream, true, true);
ImageReadParam param = r.getDefaultReadParam();
//lecture des images : tant qu'il y a pas d'exception
try{
int i = 0;
while(true){
img.add(r.read(i,param));
i ++;
}
}catch(Exception e2){}
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 4 mars 2007 à 11:01
Le mieu serai d expliquer un peu ton probléme ;o) ;o) ..
Cependant ;o) je peu déjà à une premiere lecture te conseiller d utiliser la class ImageIcon ;o) trés pratique pour un chargement simplifié d image qui évite l utilisation de thread et de MediaTracker ce que du reste tu n utilise pas ;o) dans le chargemetn de tes images.. ;o)
de plus ;o) si tu veux fair eun effet de trnasparence ;o) centre ton image ce sera plus joli .. ;o)
et je ne suis pas sur que l utilisation d un MediaTracker soit nécessaire avec pour l image provenant de Robot, dans tous les cas le waitForAll ;o) est fortement déconseiller ;o) dans la mehtode paint ;o) ..
Et que diable !!!! IMG n est pas une constante donc l emploi des minuscules EST de rigueur....
;o) bon courage ... si j ai 2 min je le compilerai ;o)
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 4 mars 2007 à 11:26
Salut,
pas mieux que [auteurdetail.aspx?ID=190746 GodConan]<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title></title><meta name="GENERATOR" content="OpenOffice.org 2.1 (Linux)" /><meta name="AUTHOR" content="twins Twinuts" /><meta name="CREATED" content="20070304;11242700" /><meta name="CHANGED" content="16010101;0" /><style><!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
--></style> , merci de précisé ton
problème.
Avec la classe robot tu n'as pas besoin
de passer par un tracker vu qu'il te donne soit null soit une image
déjà chargée (au passage trouve un moyen pour
éviter des faire trop de captures d'écran sinon ça
va pas être super rapide et tu passeras tout ton temps dans la
récupération de la capture...) autre chose dans la
méthode drawImage tu n'est pas obligé de faire un cast
BufferedImage -> Image.
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."