cs_Finality
Messages postés76Date d'inscriptionsamedi 28 janvier 2006StatutMembreDernière intervention22 janvier 2009
-
29 déc. 2007 à 10:14
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 2008
-
29 déc. 2007 à 15:21
Bonjour tout le monde,
je suis actuellement confronté à une erreur que je trouve incompréhensible. Tout d'abord voilà le contexte : j'essai de créer un Tetris en VB (.NET) à l'aide d'une source sur ce site même (Netris).
Tout d'abord je créé un bitmap de fond, qui représentera l'état de mon jeu à chaque moment. Puis après je créé un objet block d'une classe personnalisée piece. Puis je lui applique la méthode "voir" correspondante à la classe "piece" :
Public Sub Voir(ByRef BitM As Bitmap)
_Carre1.Voir(BitM)
_Carre2.Voir(BitM)
_Carre3.Voir(BitM)
_Carre4.Voir(BitM)
End Sub, ----
(Coloration syntaxique automatique par Kenji)
Je précise que _Carre1, _Carre2, _Carre3, _Carre4 sont des objets créés lors de la création de mon objet block, et de classe "carre"
Voilà le code de la méthode voir relative à ma classe carre :
; Public Sub Voir(ByRef BitM As Bitmap)
Dim graph As Graphics = Graphics.FromImage(BitM)
Dim graphPath As New GraphicsPath
Dim brush As PathGradientBrush
Dim surroundColor As Color()
Dim rect As Rectangle
rect = New Rectangle(Me.position.X, Me.position.Y, Me.Taille, Me.Taille)
graphPath.AddRectangle(rect)
brush = New PathGradientBrush(graphPath)
brush.CenterColor = Me.CouleurDessus
Le probleme est que quand je lance mon application, un message d'erreur apparait sur la ligne " brush = New PathGradientBrush(graphPath)" et me dit que la mémoire est insuffisante. Mais quand je lance l'appli téléchargée (utilisant les mêmes méthodes), cela fonctionne
Quelqu'un pourrait-il me dire d'où cela provient, car ça me bloque dans mon projet
cs_Finality
Messages postés76Date d'inscriptionsamedi 28 janvier 2006StatutMembreDernière intervention22 janvier 2009 29 déc. 2007 à 12:16
Tout d'abord merci pour ta réponse
Ayant pris mon courage à deux mains, je me suis tappé un débugage pas à pas et j'ai trouvé le bug (stupide comme à chaque fois) : j'avais oublié de préciser la valeur de mon Me.Taille lol
Merci tout de même pour ton aide
Cordialement
Kevin PERRIAT
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 29 déc. 2007 à 10:20
Bonjour,
Je ne connais pas VB.Net,
Je dirais simplement que si ta sub voir est appelée plusieurs fois, tu crées autant de fois des Rect et Brush, sans (je ne le vois nulle part dans ton code) les détruire et ainsi relibérer de la mémoire!
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 29 déc. 2007 à 15:21
jmfmarques < Pour info, VB.NET dispose d'un garbage collector, parait-il assez efficace, mais encore eu l'occasion de le stresser un peu pour juger par moi-même