Dessiner en java v3

Description

Applet permettant de dessiner des formes simples avec des couleurs simples.

Source / Exemple :


/*
CODE A AJOUTER DANS UNE PAGE WEB APRES AVOIR COMPLILER L'APPLET :

<html>
<head>
	<title>Dessiner en JAVA</title>
</head>

<body bgcolor="#E1E1E1">
 <applet code="DessinerV2.class" width="800" height="600">
</applet>

</body>

</html>

  • /
import java.applet.*; import java.awt.*; import java.util.Vector; abstract class Forme { abstract void dessiner(Graphics g); } class Dessin { Graphics g; Vector listeFormes; Dessin(Graphics gc) { g = gc; listeFormes = new Vector(); } void ajoute(Forme f) { listeFormes.addElement(f); } void dessiner() { int n = listeFormes.size(); Forme f; for(int i=0; i<n; i++) { f = (Forme) listeFormes.elementAt(i); f.dessiner(g); } } void effacer() { listeFormes.removeAllElements(); } } class Point { int x; int y; Point(int x1, int y1) { x = x1; y = y1; } } class Trace extends Forme { Color couleur; Vector listePoints; Trace(Color c) { couleur = c; listePoints = new Vector(); } void ajoute(Point p) { listePoints.addElement(p); } void ajoute(int x, int y) { ajoute(new Point(x,y)); } Point nieme(int n) { if (listePoints.capacity() < n) return null; return (Point) listePoints.elementAt(n); } int nbPoints() { return listePoints.size(); } void dessiner(Graphics g) { int n = nbPoints(); if(n<=1) return; g.setColor(couleur); int x_precedent = nieme(0).x; int y_precedent = nieme(0).y; int x,y; for(int i=1; i<n; i++) { x = nieme(i).x; y = nieme(i).y; g.drawLine(x_precedent, y_precedent, x, y); x_precedent = x; y_precedent = y; } } } class Cercle extends Forme { Color couleur; Point centre; int rayon; Cercle(Color c, int x, int y, int r) { couleur = c; centre = new Point(x,y); rayon = r; } Cercle(Color c, int xc, int yc, int x, int y) { couleur = c; centre = new Point(xc,yc); rayon = (int) Math.sqrt((x-xc)*(x-xc)+(y-yc)*(y-yc)); } void dessiner(Graphics g) { g.setColor(couleur); g.drawOval(centre.x-rayon, centre.y-rayon, 2*rayon, 2*rayon); } } class Rect extends Forme { Color couleur; Point p1, p2; Rect(Color c, int x1, int y1, int x2, int y2) { couleur = c; p1 = new Point(x1, y1); p2 = new Point(x2, y2); } void dessiner(Graphics g) { int x, y, largeur, hauteur; g.setColor(couleur); x = Math.min(p1.x, p2.x); y = Math.min(p1.y, p2.y); largeur = Math.abs(p1.x - p2.x); hauteur = Math.abs(p1.y - p2.y); g.drawRect(x, y, largeur, hauteur); } } public class DessinerV2 extends Applet { private Dessin dessin; private Trace tr; private int x_precedent; private int y_precedent; private boolean gomme; private String figure; private Color couleur_courrante; private Button bouton_effacer; private Choice bouton_figure; private Choice bouton_couleur; private Choice taille_gomme; private String taille; public void init() { dessin = new Dessin(getGraphics()); this.setBackground(Color.white); gomme = false; figure = "trace"; couleur_courrante = Color.black; bouton_effacer = new Button("Effacer"); bouton_effacer.setForeground(Color.black); bouton_effacer.setBackground(Color.lightGray); this.add(bouton_effacer); bouton_couleur = new Choice(); bouton_couleur.addItem("noir"); bouton_couleur.addItem("rouge"); bouton_couleur.addItem("jaune"); bouton_couleur.addItem("vert"); bouton_couleur.addItem("bleu"); bouton_couleur.addItem("cyan"); bouton_couleur.addItem("gris foncé"); bouton_couleur.addItem("gris"); bouton_couleur.addItem("gris clair"); bouton_couleur.addItem("violet"); bouton_couleur.addItem("orange"); bouton_couleur.addItem("rose"); bouton_couleur.addItem("blanc"); bouton_couleur.addItem("GOMME"); bouton_couleur.setForeground(Color.black); bouton_couleur.setBackground(Color.lightGray); this.add(new Label(" Couleur :")); this.add(bouton_couleur); bouton_figure = new Choice(); bouton_figure.addItem("trace"); bouton_figure.addItem("rectangle"); bouton_figure.addItem("cercle"); bouton_figure.addItem("rectangle plein"); bouton_figure.addItem("cercle plein"); bouton_figure.setBackground(Color.lightGray); this.add(bouton_figure); taille_gomme = new Choice(); taille_gomme.addItem("1"); taille_gomme.addItem("2"); taille_gomme.addItem("5"); taille_gomme.addItem("10"); taille_gomme.addItem("25"); taille_gomme.addItem("50"); taille_gomme.setBackground(Color.lightGray); this.add(new Label(" Taille gomme :")); this.add(taille_gomme); } public void paint(Graphics gc) { dessin.dessiner(); } public boolean mouseDown(Event e, int x, int y) { if(figure.equals("trace")) { tr = new Trace(couleur_courrante); tr.ajoute(x, y); } x_precedent = x; y_precedent = y; return true; } public boolean mouseDrag(Event e, int x, int y) { Graphics g = this.getGraphics(); if(gomme) { if(taille.equals("1")) { dessin.ajoute(new Rect(getBackground(), x, y, x, y)); } else if(taille.equals("2")) { dessin.ajoute(new Rect(getBackground(), x, y, x+1, y+1)); } else if(taille.equals("5")) { dessin.ajoute(new Rect(getBackground(), x, y, x+4, y+4)); } else if(taille.equals("10")) { dessin.ajoute(new Rect(getBackground(), x, y, x+9, y+9)); } else if(taille.equals("25")) { dessin.ajoute(new Rect(getBackground(), x, y, x+24, y+24)); } else if(taille.equals("50")) { dessin.ajoute(new Rect(getBackground(), x, y, x+49, y+49)); } g.setColor(this.getBackground()); g.fillRect(x, y, 5, 5); } else if(figure.equals("trace")) { tr.ajoute(x, y); g.setColor(couleur_courrante); g.drawLine(x_precedent, y_precedent, x, y); x_precedent = x; y_precedent = y; } return true; } public boolean mouseUp(Event e, int x, int y) { if(gomme) return true; Graphics g = this.getGraphics(); g.setColor(couleur_courrante); if(figure.equals("rectangle")) { dessin.ajoute(new Rect(couleur_courrante, x_precedent, y_precedent, x, y)); g.drawRect(Math.min(x_precedent, x), Math.min(y_precedent, y), Math.abs(x - x_precedent), Math.abs(y - y_precedent)); } else if(figure.equals("cercle")) { dessin.ajoute(new Cercle(couleur_courrante, x_precedent, y_precedent, x, y)); int rayon = (int) Math.sqrt((x - x_precedent)*(x - x_precedent)+(y - y_precedent)*(y - y_precedent)); g.drawOval(x_precedent - rayon, y_precedent - rayon, 2*rayon, 2*rayon); } else if(figure.equals("rectangle plein")) { dessin.ajoute(new Rect(couleur_courrante, x_precedent, y_precedent, x, y)); g.fillRect(Math.min(x_precedent, x), Math.min(y_precedent, y), Math.abs(x - x_precedent), Math.abs(y - y_precedent)); } else if(figure.equals("cercle plein")) { dessin.ajoute(new Cercle(couleur_courrante, x_precedent, y_precedent, x, y)); int rayon = (int) Math.sqrt((x - x_precedent)*(x - x_precedent)+(y - y_precedent)*(y - y_precedent)); g.fillOval(x_precedent - rayon, y_precedent - rayon, 2*rayon, 2*rayon); } else if(figure.equals("trace")) { dessin.ajoute(tr); } return true; } public boolean action(Event event, Object arg) { if(event.target == bouton_effacer) { dessin.effacer(); Graphics g = this.getGraphics(); Rectangle r = this.bounds(); g.setColor(this.getBackground()); g.fillRect(r.x, r.y, r.width, r.height); return true; } else if (event.target == bouton_couleur) { gomme = false; if(arg.equals("noir")) couleur_courrante = Color.black; else if(arg.equals("rouge")) couleur_courrante = Color.red; else if(arg.equals("jaune")) couleur_courrante = Color.yellow; else if(arg.equals("vert")) couleur_courrante = Color.green; else if(arg.equals("bleu")) couleur_courrante = Color.blue; else if(arg.equals("cyan")) couleur_courrante = Color.cyan; else if(arg.equals("gris foncé")) couleur_courrante = Color.darkGray; else if(arg.equals("gris")) couleur_courrante = Color.gray; else if(arg.equals("gris clair")) couleur_courrante = Color.lightGray; else if(arg.equals("violet")) couleur_courrante = Color.magenta; else if(arg.equals("orange")) couleur_courrante = Color.orange; else if(arg.equals("rose")) couleur_courrante = Color.pink; else if(arg.equals("blanc")) couleur_courrante = Color.white; else if(arg.equals("GOMME")) gomme = true; return true; } else if(event.target == bouton_figure) { figure = (String) arg; return true; } else if(event.target == taille_gomme) { taille = (String) arg; return true; } else return super.action(event, arg); } }

Conclusion :


L'option 'taille de la gomme' ne marche pas, ce sera bientôt réparer.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.