cs_cyberny
Messages postés6Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention16 juin 2004
-
16 juin 2004 à 13:16
wargre
Messages postés649Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention 9 septembre 2004
-
16 juin 2004 à 16:39
Bonjour @ tous!
J'ai fait une petite applet qui permet de dessiner dont voilà la source (ne me taper pas sur les doigts c mon premier java mais je veux bien avoir des critiques)
public class Dessin extends Applet implements ItemListener,ActionListener,MouseListener,MouseMotionListener{
Panel panel = new Panel();
Panel zoneDessin = new Panel();
String outil;
Button btnStylo = new Button("Crayon");
Button btnPinceau = new Button("Pinceau");
Button btnEraser = new Button("Gomme");
Button btnExporter = new Button("Enregistrer...");
Choice chColor = new Choice();
Color cEraser = new Color(255,255,255);
Color cBleu = new Color(0,0,255);
Color cRouge = new Color(255,0,0);
Color cVert = new Color(0,255,0);
Color cNoir = new Color(0,0,0);
Color cGris = new Color(180,180,180);
Color cActuelle = cNoir;
//choix des outils selon les boutons pressés
public void actionPerformed(ActionEvent e){
String btn = e.getActionCommand();
//si on est en gomme reprendre la couleur noir par defaut
if(cActuelle.equals(cEraser)){
chColor.select(1);
cActuelle = cNoir;
}
//choix du crayon
if (btn.equals("Crayon")){
outil = "Crayon";
//choix du pinceau
}else if (btn.equals("Pinceau")){
outil = "Pinceau";
//choix de la gomme (reprendre la couleur blanche!)
}else if (btn.equals("Gomme")){
outil = "Gomme";
cActuelle = cEraser;
chColor.select(0);
}else if (btn.equals("Enregistrer...")){
save();
}
}
//choix de la couleur
public void itemStateChanged(ItemEvent e){
String choix = (String)e.getItem();
//si l'outil est la gomme on ne change pas de couleur
if(outil.equals("Gomme")){
chColor.select(0);
cActuelle = cEraser;
//si on choisi le premier on repasse automatiquement au noir (couleur par defaut)
}else if(choix.equals("----")){
chColor.select(1);
cActuelle = cNoir;
//choix des couleurs
}else if(choix.equals("noir")){
cActuelle = cNoir;
}else if(choix.equals("rouge")){
cActuelle = cRouge;
}else if(choix.equals("bleu")){
cActuelle = cBleu;
}else if(choix.equals("vert")){
cActuelle = cVert;
}
};
public void mousePressed(MouseEvent e){
int x,y;
//recuperation des coordonnées
x = e.getX();
y = e.getY();
//mise à jour des coordonnées
mouseX = x;
mouseY = y;
}
public void mouseDragged(MouseEvent e){
int x,y;
//recuperation des coordonnées
x = e.getX();
y = e.getY();
//mise à jour de la couleur
dessin.setColor(cActuelle);
dessinBuffered.setColor(cActuelle);
//dessin de la forme en fonction de la forme choisie
if (outil.equals("Gomme")){
//dessin.fillRect(mouseX-10,mouseY-10,20,20);
dessinBuffered.fillRect(mouseX-10,mouseY-10,20,20);
}else if(outil.equals("Pinceau")){
//dessin.fillOval(mouseX-3,mouseY-3,6,6);
dessinBuffered.fillOval(mouseX-3,mouseY-3,6,6);
}else if(outil.equals("Crayon")){
//dessin.drawLine(mouseX,mouseY,x,y);
dessinBuffered.drawLine(mouseX,mouseY,x,y);
}
dessin = dessinBuffered;
//mise à jour des coordonnées
mouseX = x;
mouseY = y;
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void save(){
try{
FileOutputStream file = new FileOutputStream("ZePicture.jpg");
1) quand je reduit la fenetre et que je reviens dessus le dessin s'efface....
2) je ne peux pas enregistrer le dessin donc je voudrais la passer en parametre d'url en mode binaire pour la recupere en PHP (ben vi free heberge que du PHP)
public class Dessin extends Applet implements ItemListener,ActionListener,MouseListener,MouseMotionListener{
Panel panel = new Panel();
Panel zoneDessin = new Panel();
String outil;
Button btnStylo = new Button("Crayon");
Button btnPinceau = new Button("Pinceau");
Button btnEraser = new Button("Gomme");
Button btnExporter = new Button("Enregistrer...");
Choice chColor = new Choice();
Color cEraser = new Color(255,255,255);
Color cBleu = new Color(0,0,255);
Color cRouge = new Color(255,0,0);
Color cVert = new Color(0,255,0);
Color cNoir = new Color(0,0,0);
Color cGris = new Color(180,180,180);
Color cActuelle = cNoir;
//choix des outils selon les boutons pressés
public void actionPerformed(ActionEvent e){
String btn = e.getActionCommand();
//si on est en gomme reprendre la couleur noir par defaut
if(cActuelle.equals(cEraser)){
chColor.select(1);
cActuelle = cNoir;
}
//choix du crayon
if (btn.equals("Crayon")){
outil = "Crayon";
//choix du pinceau
}else if (btn.equals("Pinceau")){
outil = "Pinceau";
//choix de la gomme (reprendre la couleur blanche!)
}else if (btn.equals("Gomme")){
outil = "Gomme";
cActuelle = cEraser;
chColor.select(0);
}else if (btn.equals("Enregistrer...")){
save();
}
}
//choix de la couleur
public void itemStateChanged(ItemEvent e){
String choix = (String)e.getItem();
//si l'outil est la gomme on ne change pas de couleur
if(outil.equals("Gomme")){
chColor.select(0);
cActuelle = cEraser;
//si on choisi le premier on repasse automatiquement au noir (couleur par defaut)
}else if(choix.equals("----")){
chColor.select(1);
cActuelle = cNoir;
//choix des couleurs
}else if(choix.equals("noir")){
cActuelle = cNoir;
}else if(choix.equals("rouge")){
cActuelle = cRouge;
}else if(choix.equals("bleu")){
cActuelle = cBleu;
}else if(choix.equals("vert")){
cActuelle = cVert;
}
};
public void mousePressed(MouseEvent e){
int x,y;
//recuperation des coordonnées
x = e.getX();
y = e.getY();
//mise à jour des coordonnées
mouseX = x;
mouseY = y;
}
public void mouseDragged(MouseEvent e){
int x,y;
//recuperation des coordonnées
x = e.getX();
y = e.getY();
//mise à jour de la couleur
dessin.setColor(cActuelle);
dessinBuffered.setColor(cActuelle);
//dessin de la forme en fonction de la forme choisie
if (outil.equals("Gomme")){
dessin.fillRect(mouseX-10,mouseY-10,20,20);
dessinBuffered.fillRect(mouseX-10,mouseY-10,20,20);
}else if(outil.equals("Pinceau")){
dessin.fillOval(mouseX-3,mouseY-3,6,6);
dessinBuffered.fillOval(mouseX-3,mouseY-3,6,6);
}else if(outil.equals("Crayon")){
dessin.drawLine(mouseX,mouseY,x,y);
dessinBuffered.drawLine(mouseX,mouseY,x,y);
}
//mise à jour des coordonnées
mouseX = x;
mouseY = y;
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void save(){
try{
FileOutputStream file = new FileOutputStream("ZePicture.jpg");
cs_cyberny
Messages postés6Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention16 juin 2004 16 juin 2004 à 13:44
mon dessin se fait bien (http://cyberny.free.fr/berny) mais quand tu reduit la page html et que tu la restore le dessin disparait c clairement un probleme de buffer .....
wargre
Messages postés649Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention 9 septembre 20047 16 juin 2004 à 13:54
non c'est un probleme que comme t'as pas overloader la methode public void paint(Graphic g), quand il redimentionne la fenetre, que tu restore qqchse etc etc , il appelle paint(g) et donc ne fait rien.
Generalement, on stocke les infos pour faire le dessin, puis on apelle invalidate(true); qui appelle le paint.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cyberny
Messages postés6Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention16 juin 2004 16 juin 2004 à 14:08
je suis completement pommé....
j'implement ma methode paint (Graphics g).
si g compris elle est appelé à chaque evennement de l'applet (redimensionnement, focus....)
mais comment ca marche la je suis sur que je m'y prends tres tres tres mal j'ai un graphics qui trace le graphic sur le panel plus un qui buffer le dessin afin de l'enregistrer dans un fichier(ca ca va changer mais j'ai besoin d'un buffer)
la g un Graphics g dans paint comment ca marche ??
je peux pas dire g = dessinBuffer....
t'as un exemple j'arrive pas a trouver le truc ...
/**
* Created by IntelliJ IDEA.
* User: IntelliJ EAP Member
* Date: 16 juin 2004
* Time: 14:21:27
* To change this template use File | Settings | File Templates.
*/
public class Main extends JFrame{
private Point p1,p2;
public Main(){
p1=new Point(10,10);
p2=new Point(30,30);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
point(e.getPoint());
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
});
}
public static void main(String[] args) {
Main m=new Main();
m.setSize(300,300);
m.setVisible(true);
}
public void paint(Graphics g){
g.clearRect(0,0,300,300);
g.setColor(Color.red);
g.drawLine(p1.x,p1.y, p2.x,p2.y);
}
private void point(Point p){
p1=p2;p2=p;
this.repaint(); /* Avant c'etait invalidate il me semble mais bon...*/
}
}
cs_cyberny
Messages postés6Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention16 juin 2004 16 juin 2004 à 16:22
bon j'abandonne ca marche pas ...
dans le premier cas de figure mon dessin est toujours dans le buffer puisque si j'enregistre (ca marche avec eclips) j'ai bien le bon dessin meme si rien est affiché à l'ecran. je peux pas faire un dessine-moi ce que j'ai dans mon buffer?