dessiner un rectangle vide sur une image

dessiner un rectangle vide sur une image - Java - Programmation

Marsh Posté le 18-04-2007 à 11:35:49    

Bonjour!
 
Alors en fait j'aimerais dessiner un rectangle vide sur une image que je chargerais à l'écran, en récupérant les clics de l'utilisateur pour savoir où le positionner... :)
 
Je m'explique: j'ai une image dans un jscrollpane, (pour le moment un displayJAI, mais si je dois utiliser une BufferedImage je le ferais...) et j'aimerais que quand l'utilisateur clique sur un point de l'image (j'ai récupéré la position du clic déjà) ça dessine un carré dont l'interieur serait transparent, afin de délimiter la zone choisie...
 
Quelqu'un aurait une idée? J'ai trouvé des trucs avec une BufferedImage et l'utilisation de graphics2D mais j'ai pas compris :/ J'ai trouvé des trucs pour créer une nouvelle image et dessiner dessus mais pas pour dessiner sur une image existante...
 
Merci en tout cas!  
 
:hello:


Message édité par delantera le 18-04-2007 à 14:09:33

---------------
500px People who think they know everything are a great annoyance to those of us who do.
Reply

Marsh Posté le 18-04-2007 à 11:35:49   

Reply

Marsh Posté le 18-04-2007 à 13:00:07    

Bon je mets un truc que j'ai essayé, vous allez sûrement vous marrer mais bon c'est un truc d'essai :D

 
Code :
  1. import java.awt.*;
  2. import java.io.IOException;
  3. import javax.media.jai.JAI;
  4. import javax.media.jai.RenderedOp;
  5. import javax.swing.*;
  6. import com.sun.media.jai.codec.FileSeekableStream;
  7. import com.sun.media.jai.widget.DisplayJAI;
  8. import java.awt.image.*;
  9. import java.awt.*;
  10. import java.awt.geom.*;
  11. import javax.swing.*;
  12. import java.awt.geom.Ellipse2D;
  13. import java.awt.image.*;
  14. import javax.imageio.*;
  15. import java.io.*;
  16. public class utilise {
  17. public static void main(String[] args)
  18. {
  19.  Dimension dscreen = Toolkit.getDefaultToolkit().getScreenSize();
  20.  JFrame frame=new JFrame();
  21.  BufferedImage buffimag;//buffered image chargée avec la methode du dessous
  22.  Image imag=null;
  23.  try {
  24.   imag = ImageIO.read(new File("angle_without_shadow2.jpg" ));
  25.  } catch (IOException e) {
  26.   e.printStackTrace();
  27.  }
  28.  buffimag=getBufferedImage(imag);
  29.  //System.out.println("widthbuff " + buffimag.getWidth());//tests pour voir si l'image est belle et bien la
  30.  //System.out.println("heightbuff " + buffimag.getHeight());
  31.  Container contentPane = frame.getContentPane();
  32.  contentPane.setLayout(new BorderLayout());
  33.  JScrollPane sp = new JScrollPane();
  34.  contentPane.add(sp,BorderLayout.WEST);
  35.  Graphics2D g = buffimag.createGraphics();
  36.  g.setColor(Color.red);
  37.                 g.drawRect(0,0,100,100);
  38.     g.dispose();// je sais pas à quoi ça sert...
  39.  sp.paint(g);//la je sais pas du tout si ça peut fonctionner???
  40.  sp.setPreferredSize(new Dimension(dscreen.height,dscreen.width*3/4));
  41.  frame.setExtendedState(frame.MAXIMIZED_BOTH);
  42.  sp.repaint();//necessaire?
  43.  frame.setVisible(true);
  44. }
  45.   public static BufferedImage getBufferedImage(Image img)
  46.   {
  47.      int w = img.getWidth(null);
  48.      int h = img.getHeight(null);
  49.      System.out.println("width " + w);
  50.      System.out.println("height " + h);
  51.      BufferedImage bImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
  52.      Graphics2D g2 = bImage.createGraphics();
  53.      g2.drawImage(img, 0, 0, null);
  54.      return bImage;
  55.    } 
  56. }


Message édité par delantera le 18-04-2007 à 14:27:27

---------------
500px People who think they know everything are a great annoyance to those of us who do.
Reply

Marsh Posté le 18-04-2007 à 15:12:23    

Quelqu'un saurait pourquoi ça ne m'affiche rien avec le code du dessus? :jap:


Message édité par delantera le 18-04-2007 à 15:16:49

---------------
500px People who think they know everything are a great annoyance to those of us who do.
Reply

Sujets relatifs:

Leave a Replay

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