Valeur de variables altérée [Résolu]

Signaler
Messages postés
46
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
5 février 2010
-
Messages postés
46
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
5 février 2010
-
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

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
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#
Messages postés
46
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
5 février 2010

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.
Messages postés
46
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
5 février 2010

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
Messages postés
46
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
5 février 2010

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
Messages postés
46
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
5 février 2010

et pour le 1er problème, tu as une idée ?

c'est encore + embetant :s