Rectange et resize

cs_walid2012 Messages postés 2 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 14 avril 2006 - 14 avril 2006 à 12:17
Aethan Messages postés 50 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 4 mai 2006 - 27 avril 2006 à 15:28
bonjour ,
enfin j'ai realiser une petite application qui dessine un rectangle,mais mon but est de pouvoir le selectionner et adjuster(comme ca se fait avec photoshop...ou quel editeur de dessin.)
pourriez vous m'aidez car g passé plusieurs heurs de recherche mais sans resultat.
merci.

en voila mon code source de cette application:
import java.awt.*;
import java.awt.event.*;

import java.swing.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.util.List;

public class Editeur extends Frame implements ActionListener,ItemListener,MouseMotionListener,MouseListener
{
Button b1;
Button b2;
Button b3;
Button b4;
Canvas c;
Choice cFond;
Choice cText;
String boutonchoisi="Ligne";
int x;
int y;
int lastX;
int lastY;
Color couleurFond=Color.blue;
Color couleurText=Color.yellow;

//constructeur
public Editeur(){
setTitle("Mon Editeur de dessin");
setLayout(new FlowLayout());
Panel p1=new Panel(new GridLayout(8,1,30,5));

//creation des choix de couleur cFond
cFond=new Choice();
cFond.add("Bleu");
cFond.add("Noir");
cFond.add("Rouge");
cFond.add("Vert");
p1.add(new Label("couleur de fond"));
p1.add(cFond);

cText =new Choice();
cText.add("Jaune");
cText.add("Rose");
cText.add("Blanc");
cText.add("Bleu");
p1.add(new Label("couleur de Text"));
p1.add(cText);

//creation des boutons
//b1=new Button("Ligne");
b2=new Button("Rectangle");
//b3=new Button("Oval");
b4=new Button("Effacer");
//p1.add(b1);
p1.add(b2);
//p1.add(b3);
p1.add(b4);
add(p1);

//creation de canvas

c=new Canvas();
c.setSize(400,400);
c.setBackground(couleurFond);
add(c);
setVisible(true);
pack();

//ajout des ecouteurs
addWindowListener(new EcouteurFenetre());
//b1.addActionListener(this);
b2.addActionListener(this);
//b3.addActionListener(this);
b4.addActionListener(this);

cFond.addItemListener(this);
cText.addItemListener(this);
c.addMouseMotionListener(this);
c.addMouseListener(this);
}
//Methode principâle

//implemation de mouseListener
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){

lastX=e.getX();
lastY=e.getY();
x=lastX;
y=lastY;

}

public void mouseReleased(MouseEvent e){}
//implementation de mouseMotionListener
public void mouseDragged(MouseEvent e){
Graphics g =c.getGraphics();

/*if(boutonchoisi=="Ligne")
{
g.setColor(couleurText);
g.drawLine(lastX,lastY,e.getX(),e.getY());
lastX=e.getX();
lastY=e.getY();

}*/
/* else*/ if (boutonchoisi=="Rectangle")
{
g.setColor(couleurFond);
g.drawRect(lastX,lastY,x-lastX,y-lastY);
g.setColor(couleurText);
g.drawRect(lastX,lastY,e.getX()-lastX,e.getY()-lastY);
x=e.getX();
y=e.getY();

}
/* else if(boutonchoisi=="Ovale"){
g.setColor(couleurFond);
g.drawOval(lastX,lastY,x-lastX,y-lastY);
g.setColor(couleurText);
g.drawRect(lastX,lastY,e.getX()-lastX,e.getY()-lastY);
x=e.getX();
y=e.getY();

}
*/
}
public void mouseMoved(MouseEvent e) {}

//implementation de ActionListener
public void actionPerformed(ActionEvent e){
Button b=(Button) e.getSource();
/*if(b==b1)
boutonchoisi="Ligne";
else*/ if (b==b2)
boutonchoisi="Rectangle";
/*else if (b==b3)
boutonchoisi="Oval";*/
else if (b==b4)
c.repaint();
}
//implementation de ItemListener
public void itemStateChanged(ItemEvent e)
{
Choice ch=(Choice)e.getSource();
if(ch==cFond){
if(ch.getSelectedItem()=="Bleu")
couleurFond=Color.blue;
if(ch.getSelectedItem().equals("Noir"))
couleurFond=Color.black;
if(ch.getSelectedItem().equals("Rouge"))
couleurFond=Color.red;
if(ch.getSelectedItem().equals("Vert"))
couleurFond=Color.green;

c.setBackground(couleurFond);

}
else/*if(ch==cText*/{
if(ch.getSelectedItem().equals("Jaune"))
couleurText=Color.yellow;
if(ch.getSelectedItem().equals("Rose"))
couleurText=Color.magenta;
if(ch.getSelectedItem().equals("Blanc"))
couleurText=Color.white;
if(ch.getSelectedItem().equals("Bleu"))
couleurText=Color.cyan;
}
}
public static void main(String [] args)
{
Editeur f=new Editeur();
//f.setVisible(true);
//f.pack();
}

}

//definition de EcouteurFenetre
class EcouteurFenetre extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(1);
}
}

public class SimpleMouseListener extends JCanvasMouseListener {

public SimpleMouseListener(JCanvas canvas) {
super(canvas);

}

protected void rightClickAction(MouseEvent e) {
List selectedDrawables = canvas.findDrawables(e.getPoint());
if (selectedDrawables.size() == 0) return;
IDrawable drawable = (IDrawable) selectedDrawables.get(0);
canvas.removeDrawable(drawable);
}

protected void leftClickAction(MouseEvent e) {
Point p = e.getPoint();
IDrawable rect = createDrawable(e);
if (canvas.isFree(rect.getRectangle())) {
canvas.addDrawable(rect);
}

}

private IDrawable createDrawable(MouseEvent e) {
Point p = e.getPoint();
Dimension dim = new Dimension(40, 40);
return new RectangleDrawable(Color.RED, p, dim);

}

}

walid2012

1 réponse

Aethan Messages postés 50 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 4 mai 2006
27 avril 2006 à 15:28
Je ne suis pas rentré en detail dans ton code :

Rectangle comme tous les polygones, contient une methode nommée contains(Point p) ou contains(int x, int y) je crois...
Cette methode te dis si un point est dans ton rectangle ou pas.

Tu pourrai imaginer de selectionner ton rectangle et quand celui ci est selectionné lui ajouter 4 petits rectangles dans les coins, ainsi quand tu clique sur ces rectangles et que tu fais glisser tu peux redimensionné le tout
... Si tu n'y arrive pas je m'y pencherai plus, voir je t'aiderai, tiens moi au
courant surtout

mon site www.artignan.jexiste.fr
0
Rejoignez-nous