"paint" en java

"paint" en java - Java - Programmation

Marsh Posté le 17-04-2003 à 19:27:09    

je recherche un programme en java qui s'apparente a paint c'est a dire ou on peut dessiner a main levée, faire des figures, insérer une image etc..
le peu de code que j'ai trouvé sur le net ne fonctionne pas
merci de m'aider

Reply

Marsh Posté le 17-04-2003 à 19:27:09   

Reply

Marsh Posté le 17-04-2003 à 19:47:59    

tient je crois que c est ca ... enfin ca fait plus que rien que a main levée mais tu fera le tri...
 
Ben
 
import java.awt.*;
import java.lang.Math;
import java.awt.event.*;
import java.awt.Graphics;
import java.applet.Applet;
 
/*
  <APPLET
      CODE=draw.class
      WIDTH=600
      HEIGHT=200 >
  </APPLET>
*/
 
public class draw extends Applet implements ActionListener, MouseListener, MouseMotionListener {
    Button bDraw, bLine, bOval, bRect, bRounded;  
    Point dot[] = new Point[1000];  
    Point start, end;
    int dots = 0;
 
    boolean mouseUp = false;
    boolean draw = false;
    boolean line = false;
    boolean oval = false;
    boolean rectangle = false;
    boolean rounded = false;
 
    public void init()  
    {
        bLine = new Button("Dessiner des lignes" );
        bOval = new Button("Dessiner des ovales" );
        bRect = new Button("Dessiner des rectangles" );
        bRounded = new Button("Dessiner des rectangles arrondis" );
        bDraw = new Button("Dessiner à main levée" );
 
        add(bLine);  
        add(bOval);  
        add(bRect);  
        add(bRounded);  
        add(bDraw);  
 
        bLine.addActionListener(this);
        bOval.addActionListener(this);
        bRect.addActionListener(this);
        bRounded.addActionListener(this);
        bDraw.addActionListener(this);
 
        addMouseListener(this);
        addMouseMotionListener(this);
    }
     
    public void mousePressed(MouseEvent e)
    {
        mouseUp = false;
        start = new Point(e.getX(), e.getY());
    }
 
    public void mouseReleased(MouseEvent e)
    {
        if(line){
            end = new Point(e.getX(), e.getY());  
        } else {
            end = new Point(Math.max(e.getX(), start.x),  
                Math.max(e.getY(), start.y));  
            start = new Point(Math.min(e.getX(), start.x),  
                Math.min(e.getY(), start.y));  
        }
        mouseUp = true;
        repaint();  
    }
 
    public void mouseDragged(MouseEvent e)
    {
        if(draw){
            dot[dots] = new Point(e.getX(), e.getY());
            dots++;
            repaint();
        }
    }
 
    public void mouseClicked(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}
    public void mouseMoved(MouseEvent e){}
 
    public void paint (Graphics g)  
    {
        if (mouseUp) {
            int width = end.x - start.x;
            int height = end.y - start.y;  
 
            if(line){
                g.drawLine(start.x, start.y, end.x, end.y);
            }  
            else if(oval){
                g.drawOval(start.x, start.y, width, height);
            }
            else if(rectangle){
                g.drawRect(start.x, start.y, width, height);
            }
            else if(rounded){
                g.drawRoundRect(start.x, start.y, width, height, 10, 10);
            }
            else if(draw){
                for(int loop_index = 0; loop_index < dots - 1; loop_index++){
                    g.drawLine(dot[loop_index].x, dot[loop_index].y,  
                        dot[loop_index + 1].x, dot[loop_index + 1].y);  
                }
            }
        }
    }
 
    public void actionPerformed(ActionEvent e)
    {
        setFlagsFalse();
        if(e.getSource() == bDraw)draw = true;
        if(e.getSource() == bLine)line = true;
        if(e.getSource() == bOval)oval = true;
        if(e.getSource() == bRect)rectangle = true;
        if(e.getSource() == bRounded)rounded = true;
    }
 
    void setFlagsFalse()
    {
        rounded = false;
        line = false;
        oval = false;
        rectangle = false;
        draw = false;
    }
}

Reply

Marsh Posté le 17-04-2003 à 19:55:23    

c'est deja pas mal je vais le tester  
mais précisément je cherche un programme (de préférence applet) dans une fenètre ou on peut choisir la forme et les couleurs des figures que l'on veut dessiner
je te remercie déja de ton aide

Reply

Marsh Posté le 17-04-2003 à 20:02:16    

que faut il modifier pour que les dessisn ne soient pas effacés a chaque fois?

Reply

Marsh Posté le 17-04-2003 à 20:04:02    

un petit up pour un programme a rendre demain midi...... :sweat:

Reply

Marsh Posté le 17-04-2003 à 20:25:04    

je ne vois pas ce qui ne marche pas dans ce programme de démo fourni avec jdk
 
import java.awt.event.*;
import java.awt.*;
import java.applet.*;
 
import java.util.Vector;
 
public class DrawTest extends Applet{
    DrawPanel panel;
    DrawControls controls;
 
    public void init() {
 setLayout(new BorderLayout());
 panel = new DrawPanel();
        controls = new DrawControls(panel);
 add("Center", panel);
 add("South",controls);
    }
     
    public void destroy() {
        remove(panel);
        remove(controls);
    }
 
    public static void main(String args[]) {
 Frame f = new Frame("DrawTest" );
 DrawTest drawTest = new DrawTest();
 drawTest.init();
 drawTest.start();
 
 f.add("Center", drawTest);
 f.setSize(300, 300);
 f.show();
    }
    public String getAppletInfo() {
        return "A simple drawing program.";
    }
}
 
class DrawPanel extends Panel implements MouseListener, MouseMotionListener {
    public static final int LINES = 0;
    public static final int POINTS = 1;
    int    mode = LINES;
    Vector lines = new Vector();
    Vector colors = new Vector();
    int x1,y1;
    int x2,y2;
    int xl, yl;
 
    public DrawPanel() {
 setBackground(Color.white);
 addMouseMotionListener(this);
 addMouseListener(this);
    }
 
    public void setDrawMode(int mode) {
 switch (mode) {
   case LINES:
   case POINTS:
     this.mode = mode;
     break;
   default:
     throw new IllegalArgumentException();
 }
    }
 
 
    public void mouseDragged(MouseEvent e) {
        e.consume();
        switch (mode) {
            case LINES:
                xl = x2;
                yl = y2;
                x2 = e.getX();
                y2 = e.getY();
                break;
            case POINTS:
            default:
                colors.addElement(getForeground());
                lines.addElement(new Rectangle(x1, y1, e.getX(), e.getY()));
                x1 = e.getX();
                y1 = e.getY();
                break;
        }
        repaint();
    }
 
    public void mouseMoved(MouseEvent e) {
    }
 
    public void mousePressed(MouseEvent e) {
        e.consume();
        switch (mode) {
            case LINES:
                x1 = e.getX();
                y1 = e.getY();
                x2 = -1;
                break;
            case POINTS:
            default:
                colors.addElement(getForeground());
                lines.addElement(new Rectangle(e.getX(), e.getY(), -1, -1));
                x1 = e.getX();
                y1 = e.getY();
                repaint();
                break;
        }
    }
 
    public void mouseReleased(MouseEvent e) {
        e.consume();
        switch (mode) {
            case LINES:
                colors.addElement(getForeground());
                lines.addElement(new Rectangle(x1, y1, e.getX(), e.getY()));
                x2 = xl = -1;
                break;
            case POINTS:
            default:
                break;
        }
        repaint();  
    }
 
    public void mouseEntered(MouseEvent e) {
    }
 
    public void mouseExited(MouseEvent e) {
    }
 
    public void mouseClicked(MouseEvent e) {
    }
 
    public void paint(Graphics g) {
 int np = lines.size();
 
 /* draw the current lines */
 g.setColor(getForeground());
 g.setPaintMode();
 for (int i=0; i < np; i++) {
     Rectangle p = (Rectangle)lines.elementAt(i);
     g.setColor((Color)colors.elementAt(i));
     if (p.width != -1) {
  g.drawLine(p.x, p.y, p.width, p.height);
     } else {
  g.drawLine(p.x, p.y, p.x, p.y);
     }
 }
 if (mode == LINES) {
     g.setXORMode(getBackground());
     if (xl != -1) {
  /* erase the last line. */
  g.drawLine(x1, y1, xl, yl);
     }
     g.setColor(getForeground());
     g.setPaintMode();
     if (x2 != -1) {
  g.drawLine(x1, y1, x2, y2);
     }
 }
    }
}
 
 
class DrawControls extends Panel implements ItemListener {
    DrawPanel target;
 
    public DrawControls(DrawPanel target) {
 this.target = target;
 setLayout(new FlowLayout());
 setBackground(Color.lightGray);
 target.setForeground(Color.red);
 CheckboxGroup group = new CheckboxGroup();
 Checkbox b;
 add(b = new Checkbox(null, group, false));
 b.addItemListener(this);
 b.setBackground(Color.red);
 add(b = new Checkbox(null, group, false));
 b.addItemListener(this);
 b.setBackground(Color.green);
 add(b = new Checkbox(null, group, false));
 b.addItemListener(this);
 b.setBackground(Color.blue);
 add(b = new Checkbox(null, group, false));
 b.addItemListener(this);
 b.setBackground(Color.pink);
 add(b = new Checkbox(null, group, false));
 b.addItemListener(this);
 b.setBackground(Color.orange);
 add(b = new Checkbox(null, group, true));
 b.addItemListener(this);
 b.setBackground(Color.black);
 target.setForeground(b.getForeground());
 Choice shapes = new Choice();
 shapes.addItemListener(this);
 shapes.addItem("Lines" );
 shapes.addItem("Points" );
 shapes.setBackground(Color.lightGray);
 add(shapes);
    }
 
    public void paint(Graphics g) {
 Rectangle r = getBounds();
 
 g.setColor(Color.lightGray);
 g.draw3DRect(0, 0, r.width, r.height, false);
    }
 
  public void itemStateChanged(ItemEvent e) {
    if (e.getSource() instanceof Checkbox) {
      target.setForeground(((Component)e.getSource()).getBackground());
    } else if (e.getSource() instanceof Choice) {
      String choice = (String) e.getItem();
      if (choice.equals("Lines" )) {
 target.setDrawMode(DrawPanel.LINES);
      } else if (choice.equals("Points" )) {
 target.setDrawMode(DrawPanel.POINTS);
      }
    }
  }
}
 
 
 
     

Reply

Marsh Posté le 17-04-2003 à 20:57:43    

ramiral a écrit :

un petit up pour un programme a rendre demain midi...... :sweat:  


 
ça serait plus constructif et efficace si tu essayais de le faire et que tu posais des questions sur ce qui marche pas :sarcastic:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 17-04-2003 à 21:18:37    

up  :cry:

Reply

Marsh Posté le 17-04-2003 à 21:27:52    

quoi up ?
tu veux un truc tout fait, c'est pas conforme au règlement en vigueur ici, donc si c'est tj ça que tu veux tu l'auras pas :p


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 18-04-2003 à 03:49:45    

ramiral a écrit :

je ne vois pas ce qui ne marche pas dans ce programme de démo fourni avec jdk


il marche très bien... :o


---------------
"La Terre est le berceau de l'humanité, mais on ne passe pas toute sa vie au berceau." - Konstantine Tsiolkovski
Reply

Marsh Posté le 18-04-2003 à 03:49:45   

Reply

Marsh Posté le 18-04-2003 à 08:47:29    

[:blueflag]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 18-04-2003 à 09:39:10    

ramiral a écrit :

un petit up pour un programme a rendre demain midi...... :sweat:  


 
ban :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 29-04-2003 à 18:42:53    

c'est lamentable ce que j'ai rendu mais merci qd meme tout le monde

Reply

Marsh Posté le 30-04-2003 à 04:31:39    

et c'est ce genre de type qui gradue.. pauvre compagnie

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed