Bonjour,
pour apprendre le Java je veux faire un mini jeu ( j'essaye )
je voudrais utiliser des images,
je compte donc faire une methode qui va me retourner un tableau d'image
( un bonome, un chien par exemple ) mais avant de retourner le tableau d'image, je voudrais les redimensionner.
donc la methode
Image [] getImage(maxwidth,MaxHeight)
ressemblera a ça :
( code que j'ai fait en redigeant ce topic et en me basant sur la FAQ, donc il peut y avoir des erreurs , mais c'est juste pour le visuel, et avoir qqch de concret )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public java.awt.Image[]getImage(int maxwidth,int MaxHeight) { java.awt.Toolkit tk=java.awt.Toolkit.getDefaultToolkit(); String []chemin={"c:\\1.jpg","c:\\2.jpg"}; java.awt.Image []MyImage=new java.awt.Image[2]; //1) chargement des images dans une "case" du tableau for(int i=0;i<chemin.length;i++) { MyImage[i]=tk.getImage(chemin[i]); } //2) Redimensionnement des images en fonction des parametres return MyImage; }
et la ou je blocke c'est a l'etape 2 ( "fusionner" le code precedent avec le suivant ->), dans la FAQ je vois ceci
( pour avoir tous les elements dans ce topic, je copi/colle integralement )
1)quel est la difference entre une BufferedImage et une Image ?
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 /** Effectue une homothétie de l'image. * * @param bi l'image. * @param scaleValue la valeur de l'homothétie. * @return une image réduite ou agrandie. * */public static BufferedImage scale(BufferedImage bi, double scaleValue) { AffineTransform tx = new AffineTransform(); tx.scale(scaleValue, scaleValue); AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); BufferedImage biNew = new BufferedImage( (int) (bi.getWidth() * scaleValue), (int) (bi.getHeight() * scaleValue), bi.getType()); return op.filter(bi, biNew); }
2)puis-je dessiner une BufferedImage directement sur mon JPanel ou dois-je la convertir en Image ?
3)si je peux ecrire directement une BufferedImage sur mon JPanel alors quel est la meilleur maniere de proceder ?
ensuite dans la FAQ j'ai aussi vue ça :
4)la question que je me pose c'est a quel moment je dois faire un "dispose()"?Si vous ne faites pas de dispose() sur le contexte graphique et que vous rafraichissiez beaucoup celui-ci durant l'utilisation du programme, votre programme sera de plus en plus gourmant en mémoire.
5)que se passe t'il quand je le fais ?
je me rend bien compte que ça fait beaucoup de question, desolée
merci a ceux qui auront le courage
Partager