Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1577 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  décalage du curseur (voir image)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

décalage du curseur (voir image)

n°1890237
manu f
L'art ephémère.
Posté le 02-06-2009 à 07:30:15  profilanswer
 

Bonjour,
 
Je suis entrain de développer un logiciel de traitement d'image, mais je rencontre un soucis qui me fait rager.... j'obtiens un décalage entre là où est mon curseur et là où le tracé s'effectue, j'ai regardé au moins 20fois mon projet je vois rien qui cloche.
 
Je ne sais même pas quel partie du code je pourrais poster car je vois rien qui cloche donc pour vous faire une idée du soucis voilà un screenshot :
http://www.object-manu.net/jpaintpb.jpg
 
et ici les sources (avec un jar à l'intérieur):
http://www.object-manu.net/JPaint.zip
 
Classe où il y a le addListener();
Dessin.java :

Code :
  1. //tout les points du dessin
  2.     private ArrayList<Point> point = new ArrayList<Point>();
  3.    
  4.     public Dessin(Feuille p){
  5.         parent = p;
  6.         width = parent.getWidth();
  7.         height = parent.getHeight();
  8.         pRealTime = parent.getParent().getPRealTime();
  9.        
  10.         if(parent.getTypeRequest() == FichierMenu.NOUVEAU_FICHIER)
  11.         {
  12.             colorFond = parent.getInfo().getC();
  13.         }
  14.         else if(parent.getTypeRequest() == FichierMenu.OUVRIR_FICHIER)
  15.         {
  16.             image = parent.getImg();
  17.         }
  18.        
  19.         this.addMouseListener(new MouseAdapter(){
  20.             public void mousePressed(MouseEvent e){
  21.                 point.add(new Point(e.getX() - (pRealTime.getSizePointer()/2),
  22.                                     e.getY() - (pRealTime.getSizePointer()/2),
  23.                                     pRealTime.getSizePointer(),
  24.                                     pRealTime.getColorPointer(),
  25.                                     pRealTime.getFormPointer()));
  26.                 repaint();
  27.             }
  28.         });
  29.         this.addMouseMotionListener(new MouseMotionListener(){
  30.             public void mouseDragged(MouseEvent e) {
  31.                 point.add(new Point(e.getX() - (pRealTime.getSizePointer() / 2),
  32.                         e.getY() - (pRealTime.getSizePointer() / 2),
  33.                         pRealTime.getSizePointer(),
  34.                         pRealTime.getColorPointer(),
  35.                         pRealTime.getFormPointer()));
  36.                 repaint();
  37.             }
  38.             public void mouseMoved(MouseEvent e) {}
  39.         });
  40.     }
  41.     public void paintComponent(Graphics g){
  42.         g.setColor(colorFond);
  43.         g.fillRect(0, 0, width, height);
  44.             for(Point p : this.point)
  45.             {
  46.                 g.setColor(p.getColor());
  47.                
  48.                     g.fillRect(p.getX(), p.getY(), p.getSize(), p.getSize());
  49.             }
  50.     }
  51. }


Avez vous idée sur comment je peux résoudre ce problème ?


Message édité par manu f le 02-06-2009 à 07:40:46

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
mood
Publicité
Posté le 02-06-2009 à 07:30:15  profilanswer
 

n°1890302
Deamon
Posté le 02-06-2009 à 10:59:14  profilanswer
 

A première vue je dirai que c'est un problème de position relative/absolue de la frame ou de ton panel.

n°1890425
manu f
L'art ephémère.
Posté le 02-06-2009 à 15:14:57  profilanswer
 

Je me demande si c'est possible que ce soit principalement due à un problème d'architecture ?
 
Car là j'ai beau cherché je vois pas comment résoudre le problème.


Message édité par manu f le 02-06-2009 à 15:19:28

---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
n°1890447
Deamon
Posté le 02-06-2009 à 15:28:09  profilanswer
 

Le décalage semble être de la même taille que la hauteur de la barre du haut de ton programme (menu+toolbar) donc à mon avis ça vient d'un problème de coordonnées.
J'avais eu un problème similaire avec un awt.Robot qui reproduisait mes clics avec un décalage. Mais j'ai zappé ce petit projet donc j'ai pas résolu le problème.
Regarde où se trouve le point 0 du curseur et du panel/canvas où tu dessines.

n°1890492
manu f
L'art ephémère.
Posté le 02-06-2009 à 16:13:23  profilanswer
 

Effectivement le décalage correspond au point (0,0) de mon application jusqu'au point (0,0) de ma JInternalFrame.
 
Le soucis c'est que ça m'avance pas plus dans mon problème, le addListener est appliqué sur le bon composant etc... donc je vois pas pourquoi ce décalage à lieu. :/


---------------
Pire qu'une pierre dans la chaussure, est un grain de sable dans la capote.  Coluche.
n°1890501
Deamon
Posté le 02-06-2009 à 16:36:14  profilanswer
 

Je pense que quand tu dessines avec le Graphics il ne prend en compte que le panel/canvas concerné et donc le (0,0) correspond au coin de ce panel et non le point (0,0) de l'application.
Donc à mon avis il faut que tu utilises par exemple : void  translate(int dx, int dy) sur tes Points pour redécaler dans le bon sens où dx et dy sont les coordonnées du coin du panel mais dans la frame globale (je sais pas si c'est clair).


Message édité par Deamon le 02-06-2009 à 16:36:52

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  décalage du curseur (voir image)

 

Sujets relatifs
Recupérer texte d'une zone de texte, sur une image[javascript|jquery] affichage dynamique d'une image ds un div
inserer une imageRajouter une image sur l'animation
[Résolu] Joindre une image à un mail avec C#ouvrir une image en mode binaire ?
Insertion image dans une richtextboxRedéfinir la position du point d'origine d'une image
Background image qui marche dans IE mais pas dans FFBackground image qui marche dans IE mais pas dans FF
Plus de sujets relatifs à : décalage du curseur (voir image)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR