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
|
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