2010-11-11 20 views
1

Comment puis-je reconnaître la couleur lorsque je souris sur une postition de la photo?Java Comment puis-je reconnaître une couleur de photo?

BufferedImage image = new BufferedImage("blueball.jpg"); 
Project() { 
    jFrame.setSize(new Dimension(500, 320)); 
    jFrame.getContentPane().setLayout(null); 
    colorLabelText.setBounds(new Rectangle(310, 210, 50, 30)); 
    colorLabelText.setText("Color :"); 
    colorLabel.setBounds(new Rectangle(370, 210, 100, 30)); 
    photoLabel.setBounds(new Rectangle(20, 20, 220, 250)); 
    photoLabel.addMouseListener(new RecognizeColorActionListener()); 
    jFrame.getContentPane().add(photoLabel); 
    jFrame.getContentPane().add(colorLabelText); 
    jFrame.getContentPane().add(colorLabel); 
    jFrame.setVisible(true); 
} 


    class RecognizeColorActionListener implements MouseListener { 
    @Override 
    public void mouseClicked(MouseEvent e) { 
     int x = e.getX(); 
         int y = e.getY(); 
         int imgx = image.getMinX(); 
         int imgy = image.getMinY(); 
         int c = image.getRGB(x - imgx, y - imgy); 

erreur se produit java.lang.ArrayIndexOutOfBoundsException: Coordonner hors des limites!

+0

Comment affichez-vous votre image? – fish

+0

Je l'affiche dans une étiquette l'emplacement de l'étiquette est photoLabel.setBounds (new Rectangle (20, 20, 220, 250)); – user236501

+0

Est-ce que cela fonctionne, par exemple dans le coin supérieur gauche? Dessinez-vous l'image du coin supérieur gauche de photoLabel? Que vous donne image.getWidth(), image.getHeight()? – fish

Répondre

7

Le problème est que les coordonnées X et Y de la souris ne correspondent pas aux coordonnées X et Y de l'image. Changez le quelque chose comme ceci:

int x = e.getX(); 
int y = e.getY(); 
int imgx = image.getX(); 
int imgy = image.getY(); 
int c = image.getRGB(x - imgx, y - imgy); 

Ne me citez pas exactement sur la syntaxe, mais c'est l'idée de base.

+0

Merci, est-ce que getMinX(), getMinY()? J'obtiens toujours cette erreur java.lang.ArrayIndexOutOfBoundsException: Coordonner hors des limites! – user236501

+0

Je ne suis pas sûr, car je ne dispose pas d'un environnement de développement Java sur la machine que je suis maintenant. Ce que j'ai décrit est le problème, mais vous devez jouer avec des choses pour le faire exactement. – riwalk

+0

Peut-être légèrement différente cause mon image est bufferedImage – user236501