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

Interfaces Graphiques en Java Discussion :

Problème chargement d'une image dans canvas


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 46
    Points
    46
    Par défaut Problème chargement d'une image dans canvas
    Bonjour.
    C'est encore moi car j'ai un autre soucis.
    J'aimerai chargé une image que j'ai enregistré, dans mon canvas, pour pouvoir la modifier.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    package test;
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.awt.image.RenderedImage;
    import java.awt.geom.Rectangle2D;
    import java.awt.geom.Ellipse2D;
    import java.io.*; //File et IOException
    import java.awt.Image;
     
    public class Main extends JFrame implements MouseListener, MouseMotionListener {
    	int x0=0, y0=0,taille=4;
        Canvas c;
        BufferedImage bufferedImage;
        Image image;
    	public static void main(String[] args){
    		new Main();
    	}
    	
    	public Main(){
    		super("Dessin");
    	    //Frame
    		this.setSize(850,600);
    		this.setVisible(true);
    		
    		//Radios taille du trait
    		JRadioButton petit = new JRadioButton("Petit");
    		petit.addChangeListener(new ChangeListener(){
    			public void stateChanged(ChangeEvent e){
    				taille = 2;}});
    		JRadioButton moyen = new JRadioButton("Moyen");
    		moyen.addChangeListener(new ChangeListener(){
    			public void stateChanged(ChangeEvent e){
    				taille = 4;}});
    		JRadioButton grand = new JRadioButton("Grand");
    		grand.addChangeListener(new ChangeListener(){
    			public void stateChanged(ChangeEvent e){
    				taille = 6;}});
    		
    		//JToolBar
    		JToolBar bar = new JToolBar();
    		this.getContentPane().add(bar,BorderLayout.PAGE_START);
    		bar.setFloatable(true);
    		bar.add(petit);
    		bar.add(moyen);
    		bar.add(grand);
    		
    		//Groupement des radios tailles
    		ButtonGroup bg = new ButtonGroup();
    		bg.add(petit);
    		bg.add(moyen);
    		bg.add(grand);
    		moyen.setSelected(true);
    		
    		//Sauvegarder
    		JButton sauvegarde = new JButton("Sauvegarder");
    		bar.add(sauvegarde);
    		sauvegarde.addActionListener(new SauvegardeListener());
    		
    		
    		JButton charge = new JButton("Charger");
    		bar.add(charge);
    		charge.addActionListener(new ChargeListener());
    		
    		//Canvas du dessin
    		c= new Canvas();
    		this.getContentPane().add(c);
    		c.setBackground(Color.WHITE);
    		c.addMouseListener(this);
    	    c.addMouseMotionListener(this);	    
    	    
    		bufferedImage = (BufferedImage)c.createImage(this.getWidth() , this.getHeight());//====>>>>>>Creation de l'image
    	}
        
    	public void saveImage(File destination){
    		try {
    			ImageIO.write(bufferedImage, "png", destination);//======>>>>>>>>>>>>>Enregistrement de l'image
    		} catch (IOException e) {      
    			e.printStackTrace();
    		} 
    	}
    	
    	private class SauvegardeListener implements ActionListener{
    		public void actionPerformed(ActionEvent e){
    			File f = new File("C:/Documents and Settings/Administrateur/Bureau/test.png");
    			saveImage(f);
    		}
    	}
    	
    	public void loadImage(String test){ 
    		image = getToolkit().getImage(test);
    		Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
    		g.drawImage(image, 0, 0, this);
    	}
    		     
    
    	private class ChargeListener implements ActionListener{
    		public void actionPerformed(ActionEvent e){
    			String test = "C:/Documents and Settings/Administrateur/Bureau/test.png";
    			loadImage(test);
    		}
    	}
    
    	//Lorsqu'on presse la souris
    	public void mousePressed(MouseEvent e){
    		x0 = e.getX();
    		y0 = e.getY();
    	}
    	
    	//Lorsqu'on bouge la souris avec le curseur enfoncé
    	public void mouseDragged(MouseEvent e){
    		int x,y;
     
    		Graphics2D g = (Graphics2D) bufferedImage.getGraphics(); //========>>>>>>>>>>>récupération du Graphics c'est celui-ci qui va être changé
    		Graphics2D g2 = (Graphics2D) e.getComponent().getGraphics();
    		x = e.getX();
    		y = e.getY();
    		
    		g.setStroke(new BasicStroke(taille)); //Epaisseur du trait
    		g.drawLine(x0, y0, x, y);
    		x0=x; y0=y;
    
    		g2.drawImage(bufferedImage, 0, 0, null);//==========>>>>>>>Un fois l'image terminée, elle est placée dans le graphique correspondant au canvas
    	}
    	
    	public void mouseEntered(MouseEvent e) {}
    	public void mouseExited(MouseEvent e) {}
    	public void mouseReleased(MouseEvent e) {}
    	public void mouseMoved(MouseEvent e) {}
    	public void mouseClicked(MouseEvent e) {}
     
    	public void windowClosing(WindowEvent e) {
    	    System.exit(0);
    	  }
    }

    Donc en fait, si j'ai bien compris pour la sauvegarde.
    Je charge l'image avec le getimage(), puis je récupère mon canvas, pour ensuite insérer l'image dans ce canvas.
    Mais ça ne fait rien , rien ne se charge et j'ai aucune erreur.
    (je me suis basé sur ça : http://www.infres.enst.fr/~charon/co.../monImage.html et aussi sur d'autres exemples)

    J'ai testé aussi en .jpg (au cas où le .png ne marchait pas)

    J'ai testé aussi avec un MediaTracker (J'ai vu un petit tuto l'utilisant, mais ça ne charge rien, et ça ne me met aucune erreur)

    Donc voilà, si quelqu'un peut m'expliquer pourquoi ça ne marche pas pour que je puisse résoudre ce problème ?
    Merci d'avance.


    PS : Oui je sais j'utilise tjr le AWT et le SWING, mais c'mon brouillon :p lol

  2. #2
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2008
    Messages : 43
    Points : 53
    Points
    53
    Par défaut
    Salut,

    De la même façon que la dernière fois, tu mets ce qu'il faut dans ton bufferedImage et tu le dessine sur ton canvas, de plus dans ton exemple, tu ne lis pas ton fichier.

    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 loadImage(File source){
    		try {
    			bufferedImage = ImageIO.read(source);
     
    			Graphics2D g2 = (Graphics2D) c.getGraphics();
    			g2.drawImage(bufferedImage, 0, 0, this);
     
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
     
    	private class ChargeListener implements ActionListener{
    		public void actionPerformed(ActionEvent e){
    			File f = new File("test.jpg");
    			loadImage(f);
    		}
    	}
    A++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 54
    Points : 46
    Points
    46
    Par défaut
    Bonjour ! ^^
    En fait j'ai trouvé aujourd'hui avec ma binôme.
    On a utilisé la méthode : prepareImage();
    Puis on a redéfinie la méthode paint() étant donné que prepareImage, appelle automatiquement la méthode paint()

    Merci pour l'aide quand même

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

Discussions similaires

  1. [problème] affichage d'une image dans un JButton
    Par shadowpath dans le forum Composants
    Réponses: 3
    Dernier message: 16/06/2008, 09h20
  2. Chargement d'une image dans une fonction
    Par JiViX dans le forum Débuter
    Réponses: 1
    Dernier message: 20/04/2008, 17h44
  3. Chargement d'une image dans un clip
    Par tom42 dans le forum Flash
    Réponses: 2
    Dernier message: 17/04/2007, 16h44
  4. Chargement d'une image dans un clip
    Par michpc dans le forum Flash
    Réponses: 1
    Dernier message: 10/11/2006, 17h20
  5. Chargement d'une image dans Forms
    Par barouz dans le forum Forms
    Réponses: 1
    Dernier message: 19/06/2006, 16h34

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