création d'un jeu de coloriage. Problème de précision
Bonjour a tous. Je réalise un jeu de coloriage de type paint. Pour cela j'ai utilisé les codes suivants.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| Pdessin.addMouseListener(new MouseListener()
{
public void mousePressed(MouseEvent e)
{
x[i]=e.getX()+3;
y[i]=e.getY()+235;
if(y[i] < 136) y[i] = 136;
if(x[i] > 642) x[i] = 642;
i++;
repaint();
}
public void mouseReleased(MouseEvent e)
{
x[i]=0;
y[i]=0;
i++;
repaint();
}
public void mouseClicked(MouseEvent evt){ }
public void mouseEntered(MouseEvent evt){ }
public void mouseExited(MouseEvent evt){ }
});
Pdessin.addMouseMotionListener(new MouseMotionListener()
{
public void mouseDragged(MouseEvent evt)
{
x[i] = evt.getX()+8;
y[i] = evt.getY()+80;
if(y[i] < 100) y[i] = 100;
if(x[i] > 642) x[i] = 642;
i++;
repaint();
}
public void mouseMoved(MouseEvent evt){ }
}); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public void paint(Graphics g)
{
Graphics2D g2D = (Graphics2D)g;
switch(couleur)
{
case 0 : g2D.setColor(Color.black); break;
case 1 : g2D.setColor(Color.red); break;
}
switch(trait)
{
case 1 : g2D.setStroke(new BasicStroke(2.5f)); break;
case 2 : g2D.setStroke(new BasicStroke(5.0f)); break;
}
for(int j=0 ; j<i ; j++)
if((x[j]+y[j] != 0) && (x[j+1]+y[j+1] !=0))
g2D.drawLine(x[j], y[j], x[j+1], y[j+1]);
} |
Mes problèmes sont les suivants:
- Le premier "clic" pour dessiner se traduit par un long trait vertical non désiré.
- Ce que je dessine est à environ 2cm au dessus du curseur.
Je n'arrive pas a comprendre d'où vient mon problème. Merci de m'éclairer à ce sujet. bonne soirée
Re: précision sur mon problème
J'ai passé un peu de mon temps sur ce programme. Et je voudrai quelque informations pour mieux le comprendre.
J'ai compris que il fallait que j'adapte mon programme à ma fenetre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Pdessin.addMouseListener(new MouseListener()
{
public void mousePressed(MouseEvent e)
{
// x[i]= tableau des abscisses de type int
// y[i]= tableau des ordonnées de type int
// i= indice de déplacement.
x[i]=e.getX()+17; // je n'arrive a voir a quoi correspond le +17
y[i]=e.getY()+100; // je n'arrive pas a voir a quoi correspond ce +100
if(y[i] < 136) y[i] = 136; // ça, c'est ok
if(x[i] > 642) x[i] = 642;// ça c'est ok
i++;
repaint();
}
public void mouseReleased(MouseEvent e)
{
x[i]=0;
y[i]=0;
i++;
repaint();
}
public void mouseClicked(MouseEvent evt){ }
public void mouseEntered(MouseEvent evt){ }
public void mouseExited(MouseEvent evt){ }
});
Pdessin.addMouseMotionListener(new MouseMotionListener()
{
public void mouseDragged(MouseEvent evt)
{
x[i] = evt.getX()+20; // je ne sais pas a quoi sert le +20 exactement
y[i] = evt.getY()+20; // je ne sais pas a quoi sert le +20 exactement
if(y[i] < 136) y[i] = 136;
if(x[i] > 642) x[i] = 642;
i++;
repaint();
}
public void mouseMoved(MouseEvent evt){ }
}); |
Je pensais réussir a comprendre les "+..." en les modifiant et en exécutant mon programme. Cependant je n'ai pas réussit a résoudre mon problème car je ne vois pas a quoi ça correspond. Merci