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);
}
} |
Partager