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 :

[Debutante][image]questions sur les images


Sujet :

2D Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 17
    Points : 9
    Points
    9
    Par défaut [Debutante][image]questions sur les images
    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 : 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;
        }
    ( 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 )

    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 )
    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);
     
    }
    1)quel est la difference entre une BufferedImage et une Image ?
    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 :
    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.
    4)la question que je me pose c'est a quel moment je dois faire un "dispose()"?
    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

  2. #2
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    1) La classe BufferedImage hérite de la classe Image.

    2) Oui tu peux dessiner une BufferedImage dans un Panel, puisque qu'une BufferedImage est une image.

    3) Pour déssiner une image sur un JPanel tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void paintComponent (Graphics  g)
    {
    //Pour dessiner l'image à partir du coin haut gauche de ton panel
    g.drawImage (mabufferedImage, 0, 0, null);
     
    //Pour dessiner l'image à partir du coin haut gauche de ton panel et que l'image occupe tout le JPanel
    g.drawImage (mabufferedImage, 0, 0, getWidth (), getHeight (), null);
    }
    4) tu dois faire le dispose après avoir dessiner dans ta BufferedImage.

    5) Quand tu fais un dispose, ca libère les ressources qui utilise le graphics associé.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    ok, merci cootchy

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/12/2009, 10h56
  2. Question sur les images avec Swing
    Par scary dans le forum 2D
    Réponses: 5
    Dernier message: 02/12/2009, 18h35
  3. [Gtkmm] question sur les Image
    Par supers03 dans le forum GTK+
    Réponses: 5
    Dernier message: 28/01/2008, 10h59
  4. question sur les images
    Par zulot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/06/2007, 16h43
  5. Réponses: 5
    Dernier message: 15/05/2007, 14h53

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