cs_Killan
Messages postés46Date d'inscriptionjeudi 10 janvier 2002StatutMembreDernière intervention 5 février 2010
-
28 janv. 2006 à 16:56
cs_Killan
Messages postés46Date d'inscriptionjeudi 10 janvier 2002StatutMembreDerniè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.
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 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
cs_Killan
Messages postés46Date d'inscriptionjeudi 10 janvier 2002StatutMembreDerniè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.
cs_Killan
Messages postés46Date d'inscriptionjeudi 10 janvier 2002StatutMembreDerniè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.