Créer un contrôle dans une Form depuis un objet ? - C#/.NET managed - Programmation
Marsh Posté le 19-11-2005 à 21:17:09
Idem si je met dans le Main sans lien vers la Form après le "application.Run()"
Marsh Posté le 19-11-2005 à 21:20:49
marche très bien chez moi
edit: sous C# Express 2005
Marsh Posté le 19-11-2005 à 21:33:21
Je viens de trouver ce qui déconne, en fait ce code marche
Par contre, je vois pas ce qui déconne là...
Je veux trouver le rayon d'une sphère en fonction de sa masse et de la densité de son matériau...
La formule est à priori :
Code :
|
Ce qui donne au final, dans mon cas, 159^.333 ce qui doit faire 5
Seulement... ben... pourquoi ce barge de C# me retourne 1.0 ???
Forcément, une image de 1x1 dont les 4 coins sont transparents, je la vois pas...
Marsh Posté le 19-11-2005 à 21:42:02
je vais tester, donne moi tes valeurs pour weight et density
Marsh Posté le 19-11-2005 à 21:45:29
Sinon (pour revenir au problème original), on ne peux pas redimensionner l'élément "Image" dans un "PictureBox"
Je fais comment moi pour redimensionner ma boule ?
(je pensais faire comme avec le Web, charger une image de taille assez grosse, et la redimensionner pour avoir une image plus ou moins grande - d'où le calcul du rayon de la sphère -)
Marsh Posté le 19-11-2005 à 21:46:55
En fait, c'est le "Pow" qui sait pas faire 159^.3333
-- Edit --
J'y crois pas
Pow(x, 1 / 3)
Ca fait :
(int)1 / (int)3 = 0
et du coup ben... quelque soit x, ça retourne forcément 1...
corrigé en mettant des () autour de 1 / 3 et là il comprend que je fais un calcul sur des double
Et dire que j'ai l'impression de trop caster mes variables et mettre des () pour rien... Ben je crois que même en en mettant partout même quand c'est pas nécessaire, il en faut plus
Ceci dit, ça ne résoud pas mon problème de boules... (les boules )
Marsh Posté le 19-11-2005 à 22:19:59
ben non, c'est logique
http://msdn2.microsoft.com/en-us/library/5kzh1b5w.aspx
Citation : |
Donc nul besoin de mettre des parenthèses, il te suffit de déclarer les littéraux "1" et "3" comme étant des flottants
Code :
|
Marsh Posté le 19-11-2005 à 22:22:51
sinon, pour ton problème de boule, tu peux resizer un picturebox comme ceci :
Code :
|
Marsh Posté le 19-11-2005 à 23:23:43
En fait, je suis en train de me lancer dans DirectDraw.
Je suis bloqué, je n'arrive qu'à afficher des cercles par dessus une image, parceque si je vire l'image ça plante
Je viens de tilter qu'il y a de la doc et des exemples dans le SDK que j'ai téléchargé... Avec un peu de chance...
Marsh Posté le 19-11-2005 à 23:25:55
Ouahou ! Super la doc...
Citation : |
Et y'a que ça... Microsoft à décidé qu'il ne fallait plus dessiner en 2D
Marsh Posté le 19-11-2005 à 23:29:31
Bon ben... je retourne à "picture.SizeMode = PictureBoxSizeMode.StretchImage;"
Marsh Posté le 20-11-2005 à 00:35:23
Y'a pas à dire, ça me gave
Maintenant, le prog est terminé sauf que...
Ce tocard veut pas mettre à jour l'affichage
C'est tellement minable à ce niveau que passé 3 images à afficher, il n'en affiche que les 3 premières, et ne met plus jamais à jour l'affichage (pourtant, mes balles bougent bien, mode debug inside...)
Pourtant j'ai des refresh dans tous les sens, sur la form comme sur les images, mais que pouic
Doit bien y avoir un moyen de bouger une image à l'écran quand même
Marsh Posté le 20-11-2005 à 11:22:58
Bon... Allez, j'ai du courage aujourd'hui, je vais me lancer dans du Direct3D, c'est ce qui remplace DirectDraw maintenant à priori.
Après tout, c'est vrai qu'on peut faire de la 2D avec de la 3D... Tout comme on peut presser une orange au mixeur puis utiliser un filtre à café pour récupérer le jus. (qu'est-ce qu'il faut pas inventer...)
Marsh Posté le 20-11-2005 à 12:00:45
Tiens, j'ai ENFIN trouvé un tuto clair pour apprendre le D3D.
A vrai dire, ça a l'air d'être des cours de fac ou autre, donc forcément, c'est détaillé et ça avance point par point (on n'as pas d'un tuto à l'autre 20 nouveaux objets dont seuls 3 sont expliqués )
http://home.myuw.net/jpursell/css4 [...] s/main.htm
Marsh Posté le 20-11-2005 à 12:03:06
y'a juste ça :
Citation : |
Mais on va dire que je suis pas étudiant en CSS et que ce truc me suffit amplement
Marsh Posté le 20-11-2005 à 13:04:31
Arjuna a écrit : Et y'a que ça... Microsoft à décidé qu'il ne fallait plus dessiner en 2D |
Pour le dessin en 2D, ça se fait avec GDI+, non ?
Marsh Posté le 20-11-2005 à 14:12:00
Chais pas ce que c'est
Mais c'est pas grave, avec D3D ça marche.
Niveau perfs, c'est pas terrible, mais à priori, c'est surtout mon code qui n'est pas optimisé.
Par contre, là j'ai un souci d'algo !
Comprends pas. Dans mon JS que j'ai fait l'autre jour, je détecte les collisions entre les balles.
Ca se traduit par une fusion des deux dans celle du plus petit index dans mon tableau, et la destruction de l'autre.
En théorie, ça marche, et en JS ça fait ce que je demande.
Sauf que là, je sais pas si ça vient de DX qui n'aime pas que je modifie des propriétés de Vertices et j'ai oublié de mettre un truc ou quoi mais... Si la seconde boule disparait bien, ben... la première aussi !
Et là, je sèche, je sais pas si c'est DX qui déconne ou mon algo, je trouve pas en tout cas
Et j'ai pas trouvé d'exemple DX qui permette d'ajouter/modifier/supprimer des éléments à la volée, donc je ne sais pas si c'est ce de côté qu'il manque un truc...
En tout cas, elles bougent, c'est déjà ça
Marsh Posté le 20-11-2005 à 15:02:01
Pfff...
J'en ai profité pour changer le système de collision, maintenant les balles restent collées, mais j'ai un souci
Mettons un point A et un point B défini par :
A(xa, ya, poida, rayona)
B(xb, yb, poidb, rayonb)
Dist(A, B) < rayona + rayonb
=> Le but du jeu, c'est trouver (xa, ya) et (xb, yb) de façon à ce que Dist((xa, xb), (ya, yb)) = rayona + rayonb, en prenant le point de tangeante des deux cerles = centre de grativé de (A, B).
La galère, chais plus compter moi
-- Edit --
Merde, pis c'est pas ça... Il faut que Grav(A', B') = Grav(A, B) plutôt... Avec A' et B' déplacés sur l'axe (A, B) de façon à ce que Dist(A', B') = rayona + rayonb
(sâchant aussi qu'il faut que A' et B' restent du bon côté du centre de gravité évidement...)
Marsh Posté le 20-11-2005 à 15:28:41
T'ain, j'ai la tête dans le cul, j'arrive rien à trouver comme formule
Marsh Posté le 20-11-2005 à 16:51:05
J'ai mon D3D qui se dessine dans un contrôle de la fenêtre... Je fais comment pour le redimensionner ? Parceque ça plante méchamment si je redimensionne le contrôle
Marsh Posté le 20-11-2005 à 21:20:13
pour des modifications d'image dans GDI+, pour qu'il en tienne compte
appele la méthode "invalidate()"
sinon aucune modification serait faite... désolé du retard... je suis kazi certain qu'avec ça ça fais ce que tu veux... enfin bon... voila bonne chance dans directx
Marsh Posté le 20-11-2005 à 21:34:18
Là il me reste plus qu'à trouver comment on se sert de la molette de la souris en C# et vais pouvoir vous montrer mon super chef d'oeuvre
Marsh Posté le 30-11-2005 à 15:48:03
Arjuna a écrit : Là il me reste plus qu'à trouver comment on se sert de la molette de la souris en C# et vais pouvoir vous montrer mon super chef d'oeuvre |
T'as une méthode OnMouseWheel sur tous les contrôles Winform. Mais je sais pas si tu en utilise
Sinon c'est résolu ton pb avec les int et les doubles ? Pask'en fait, en C# pour déclarer un flottant, faut l'écrire avec un 'f' après.
Ex : 4f / 3f.
L'opérateur '/' verra que les deux paramètres sont des flottants, il fera une division flottante (beaucoup plus lourde que la division entière).
Marsh Posté le 30-11-2005 à 16:02:22
En effet, tous les problèmes de ce topic sont résolus à ce jour (mise à par la molette qui déconne).
En effet, il faut tourner une demi-heure la molette pour que ça fasse quelquechose... et ça bouge d'autant que la molette a été bougée !
Pas bien compris d'où ça venait, mais à priori, c'est plus mon programme qui déconne qu'autrechose (y'a notamment une belle fuite mémoire, au bout de 5 minutes d'utilisation, le prog utilise 3 Go de RAM )
Marsh Posté le 30-11-2005 à 17:18:46
Oulala !! Pas mal
C'est ptet pour ça qu'elle déconne la molette : ça doit swapper à mort...
Marsh Posté le 01-12-2005 à 00:01:40
D'est le souci de D3D... La lib pour .NET est censée être managed, mais visiblement ils ont chié un truc dans le nettoyage de la mémoire
Et à un moment, je crée une chiée d'objets à chaque passage dans une boucle de render, et je me demande si à la sortie il sait bien les détruire comme un grand
Marsh Posté le 01-12-2005 à 00:07:38
Arjuna a écrit : |
Ben alors, tu voles plus ? Ca fait un bail que je t'ai pas croisé à FL350
Sinon j'ai réinstallé mon FS2004, ça va bcp mieux, adieu plantages
</HS>
Pour tes objets, si tu veux être sur qu'ils soient détruits, tu fais un petit coup de Dispose() quand t'en as plus besoin (sans oublier le GC.SuppressFinalize() qui va avec, pour dire au GC de ne pas virer les références à ces objets, vu qu'ils n'existent plus)
Marsh Posté le 01-12-2005 à 01:08:12
En effet, je vais regarder ça
<hs> En effet, j'ai pas volé depuis un moment, pas mal de trucs à faire au taff en ce moment et des soucis familiaux... Et même plus le temps de rien faire en ce moment... </hs>
Marsh Posté le 19-11-2005 à 21:10:32
J'ai un objet, et je veux qu'il crée un objet dans ma Form.
J'ai écrit le constructeur de la sorte :
Et je l'appelle depuis le Form1_Load de ma Form :
Mais ça n'affiche rien
J'ai oublié quoi ?