"paint" en java - Java - Programmation
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;
}
}
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
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?
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);
}
}
}
}
Marsh Posté le 17-04-2003 à 20:57:43
ramiral a écrit : un petit up pour un programme a rendre demain midi...... |
ça serait plus constructif et efficace si tu essayais de le faire et que tu posais des questions sur ce qui marche pas
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
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...
Marsh Posté le 18-04-2003 à 08:47:29
Marsh Posté le 18-04-2003 à 09:39:10
ramiral a écrit : un petit up pour un programme a rendre demain midi...... |
ban
Marsh Posté le 29-04-2003 à 18:42:53
c'est lamentable ce que j'ai rendu mais merci qd meme tout le monde
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