Dessiner des petit carre

Dessiner des petit carre - Java - Programmation

Marsh Posté le 06-08-2003 à 09:33:28    


 
Salut !!
 
alors voici mon pb :
 
Je dois dessiner une grille ( des petit carre ) dans une zone de dessin.  
 
l'utilisateur choisi le nb de ligne et le nb de colonne et egalement la zone de dessin.
 
PB : si l'utilisateur choisi de dessiner 30 lignes, 30 colonne sur une zone de 100*100 pixels on obtient:
 
100/30 = 1 ligne tous les 3,333333 pixel or on ne peut dessiner qu'avec des pixel entier.
 
Donc  
soit j'arrondi au superieur (ici 4 ) et je depasse mes 100 pixel
soit j'arrondi a l'inferieur (ici 3) et je suis en dessou de mes 100 pixel
 
( ou idem mes j'augment ou diminu le nombre de ligne pour rester a 100pixel)
 
 
kelkun a - til une solution ??
 


---------------
heu...
Reply

Marsh Posté le 06-08-2003 à 09:33:28   

Reply

Marsh Posté le 06-08-2003 à 09:41:04    

Tu travailles avec des double et lorsque tu dessines ta grille tu castes à l'entier.


Message édité par Cherrytree le 06-08-2003 à 09:41:21

---------------
Le site de ma maman
Reply

Marsh Posté le 06-08-2003 à 09:43:55    

ben ca resoud pas mon pb. c ce que je fait actuellement, et je ne rempli pas ma zone de dessin  
100/30 = 3,333 si je caste j'obtien 3 donc 3 *30 = 90 pixel au lieu de mes 100


Message édité par xtoune le 06-08-2003 à 09:47:44

---------------
heu...
Reply

Marsh Posté le 06-08-2003 à 09:50:30    

xtoune a écrit :

ben ca resoud pas mon pb. ce que je fait actuellement, et je ne rempli pas ma zone de dessin  
100/30 = 3,333 si je caste j'obtien 3 donc 3 *30 = 90 pixel au lieu de mes 100


je crois qu'il voulait dire de travailler avec des coordonnee en double, et de caster juste avant de tracer.
mais en fait il faut arrondir au plus proche:
 
genre ton 8eme carre, il part de 8*3.33333 = 24.6666666 => arrondi a 25
le 30eme => 99.99999 => arrondi a 100.
 
y aura des cases de differentes tailles, mais c'est le seul compromis si tu veux remplir absolument exactement une taille precise.

Reply

Marsh Posté le 06-08-2003 à 10:09:37    

Il ne faut travailler en coordonnées entières qu'au moment de faire ton render.


---------------
Le site de ma maman
Reply

Marsh Posté le 06-08-2003 à 10:18:55    

ok ok !! moi je passé en entier des le calcul de mon Pas entre chaque ligne !
 
 
donc je vais faire ca.
 
Danke !


---------------
heu...
Reply

Marsh Posté le 06-08-2003 à 10:27:11    

Grüsse ma poule.


---------------
Le site de ma maman
Reply

Marsh Posté le 06-08-2003 à 10:31:35    

je trouverais plus logique d'avoir la dernière ligne/colonne tronquée plutot que d'avoir des pas variables non ?
 

Reply

Marsh Posté le 06-08-2003 à 10:36:45    

ca a l'air de marcher nickel !!
 
tronqué la derniere ligne colonne ok mais le pb c que par exemple :
100/30 =3,33 => 3
ce qui donne la 29 ieme ligne a 29*3 = 87 pixel => le pas de la derniere ligne serait donc de 13pixel au lieu des 3 :-(


Message édité par xtoune le 06-08-2003 à 10:37:17

---------------
heu...
Reply

Marsh Posté le 06-08-2003 à 10:42:08    

Bon... Lorsque tu traces la grille tu fais ceci
 

Code :
  1. int width = 100;
  2. int height = 100;
  3. double step = 100 / 3;
  4. int i = 0;
  5. while (i * step < width) {
  6.     g.drawLine((int) (i * step), 0, (int) (i * step), height);
  7.     ++i;
  8. }


Message édité par Cherrytree le 06-08-2003 à 10:42:59

---------------
Le site de ma maman
Reply

Marsh Posté le 06-08-2003 à 10:42:08   

Reply

Marsh Posté le 06-08-2003 à 10:43:32    

heu je dois avoir mal compris car pour moi cela donnerait
 
30*3=90 d'ou une colonne 31 de 10 pixels et idem pour la 31eme ligne...
 
sinon tu t'arranges pour forcer l'utilisateur à ne choisir que des pas qui tombent bien  :D

Reply

Marsh Posté le 06-08-2003 à 10:46:00    

sinon personne n'a d'idee pour ce poste :
 
http://forum.hardware.fr/forum2.ph [...] subcat=390
 
it's about JList


Message édité par xtoune le 06-08-2003 à 10:46:18

---------------
heu...
Reply

Marsh Posté le 06-08-2003 à 10:53:52    

Taureau a écrit :

heu je dois avoir mal compris car pour moi cela donnerait
 
30*3=90 d'ou une colonne 31 de 10 pixels et idem pour la 31eme ligne...
 
sinon tu t'arranges pour forcer l'utilisateur à ne choisir que des pas qui tombent bien  :D  


 
 
ben c se que je disais, a part que toi tu desine une ligne de plus


---------------
heu...
Reply

Marsh Posté le 06-08-2003 à 11:03:00    

xtoune a écrit :


 
 
ben c se que je disais, a part que toi tu desine une ligne de plus


Tu l'as lu le code que j'ai écrit ?


---------------
Le site de ma maman
Reply

Marsh Posté le 06-08-2003 à 12:06:26    

J'avais deja eu le problème, mais moi je pouvais toucher aux dimensions de la zone de dessin. Je ne sais pas si c'est ton cas, mais sinon tu peux ajuster les dimensions de la zone de dessin pour que ca tombe juste. Au pire ca fait 2-3 pixels à ajouter ou retirer, ca passe inaperçu pour l'utilisateur..

Reply

Marsh Posté le 06-08-2003 à 12:09:41    

Cherrytree a écrit :


Tu l'as lu le code que j'ai écrit ?


 
oui oui, la je repondais a taureau.
 
sinon c bon ca marche nikel
danke


---------------
heu...
Reply

Marsh Posté le 06-08-2003 à 12:13:56    

R3g a écrit :

J'avais deja eu le problème, mais moi je pouvais toucher aux dimensions de la zone de dessin. Je ne sais pas si c'est ton cas, mais sinon tu peux ajuster les dimensions de la zone de dessin pour que ca tombe juste. Au pire ca fait 2-3 pixels à ajouter ou retirer, ca passe inaperçu pour l'utilisateur..


 
oui c aussi une solution ( mais a mon avis plus que 2, 3 pixel )
ici 100/30 ca nous ramene soit à 90/30=3 ou 120/30=4
soit -10 ou +20 pixel


Message édité par xtoune le 06-08-2003 à 12:15:46

---------------
heu...
Reply

Sujets relatifs:

Leave a Replay

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