| 12
 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
 
 | 
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
 
 
 
public class Main extends JFrame implements MouseListener, MouseMotionListener {
	int x0=0, y0=0,taille=4;
    Canvas c;
    BufferedImage bufferedImage;
    
	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());
		
		//Canvas du dessin
		//c = new Canvas();
		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, "jpg", destination);//======>>>>>>>>>>>>>Enregistrement de l'image
		} catch (IOException e) {      
			e.printStackTrace();
		} 
	}
	
	private class SauvegardeListener implements ActionListener{
		public void actionPerformed(ActionEvent e){
			File f = new File("test.jpg");
			saveImage(f);
		}
	}
	
	
	//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 windowClosed(WindowEvent e){ System.exit(0);} //Terminer le processus lors de la fermeture
} | 
Partager