Valeur de variables altérée

Résolu
cs_Killan Messages postés 46 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 5 février 2010 - 28 janv. 2006 à 16:56
cs_Killan Messages postés 46 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 5 février 2010 - 28 janv. 2006 à 18:59
Bonjour,

j'ai un problème assez peu commun, mon bout de code :


Rectangle r = TextureRect;



float nbx = Width / r.Width;

TextureRect renvoie un rectangle (0, 0, 256, 256) (left, top, width, height)
r est bien assigné
Width = 320

mais r.width = 320 au lieu de 256

j'ai tout recompilé, mais rien à faire, j'ai changé mon code mais je dois obtenir r.Width et le compilateur me donne tjr la valeur de Width a la place.

avez-vous une idée ?

Killan
www.daaboo.net
www.mizamis.be

5 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
28 janv. 2006 à 18:13
Si, c'est normal, il faut caster tes int en float avant de les affecter a une variable de type float.
Par etape : Un entier divisé par un entier un entier (int / int int)
Ensuite, tu as un entier que tu affectes a un float, mais celui ci ne va pas recuperer les decimales comme par magie


<HR>
int width = 320;

int height = 240;

int x = 256;

int y = 256;

float tx = (
float)width / (
float)x; // on a bien un float

float ty = (
float)height / (
float)y; // ici aussi

<HR>




Mx
MVP C#
3
cs_Killan Messages postés 46 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 5 février 2010
28 janv. 2006 à 18:59
En fait pour le 1er problème il semblerait que l'IDE de C# perde les pédales avec tous les noms de variable mère-filles et autres et donc utilise la bonne valeur mais l'indique mal en "pas à pas", combiné avec l'ex-problème de float faisait une belle toutouille et donc un résultat complêtement à coté de la plaque.
3
cs_Killan Messages postés 46 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 5 février 2010
28 janv. 2006 à 17:17
Precisions du contexte :


j'ai une classe ObjetGraphique, et une classe OGFenetre qui hérite de la première


Une méthode Draw se trouve dans la classe ObjetGraphique


L'ensemble se compile en DLL


Ensuite ceci est utilisé par une autre DLL.


Et pour des raisons que j'ignore :


float tx = width / x;



float ty = height / y;


ceci si width 320 et height 240, x = 256, y = 256
> tx 1 et ty =0

je deviens fou... c'est la première fois que des morceaux de codes partent en couille, en + ce genre d'opération ne sont pas les seules mais il n'y a que là que ça plante comme ça.

avis à la population

Killan
www.daaboo.net
0
cs_Killan Messages postés 46 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 5 février 2010
28 janv. 2006 à 17:30
ceci


double tx = 320/256;
//width / x;



double ty = 240/256;
//height / y;


à renvoyé tx=1 et ty=0

je suis obligé de faire :


int x = TextureRect.Right - TextureRect.Left;



int y = TextureRect.Bottom - TextureRect.Top;



float tx=0, ty=2;


tx = (
float)((
float)width / (
float)x);


ty = (
float)((
float)height / (
float)y);



mais ce n'est pas normal vous en conviendrez, qqun a une explication ?

Killan

www.daaboo.net
www.mizamis.be
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Killan Messages postés 46 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 5 février 2010
28 janv. 2006 à 18:52
et pour le 1er problème, tu as une idée ?

c'est encore + embetant :s
0
Rejoignez-nous