pepsidrinker
Messages postés151Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention15 avril 2009
-
17 août 2005 à 18:13
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
17 août 2005 à 20:27
Salut a tous.
Bah j'essais de créé un petit RPG BATTLE SYSTEM,
mais apres quelque blit, la pictuyre box ne blit plus les image envoyé, on dirait que la mémoire est pleine, car lordi lag beaucoup.
Pourtant, jutilise bien DelectDC et DeleteObject apres les image dont je nai plus besion:(:(:(
Aidez-moi svp.
Merci:)
scortex84
Messages postés379Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention20 avril 20111 17 août 2005 à 18:38
Hello,
j'ai eu le même problème que toi. J'affichais successivement un grand nombre de photo depuis une base de donnée dans une picturebox.
Pour cela, je passais uniquement par la mémoire. Au bout de quelques 10enes de photos, la mémoire du PC explosait !
J'ai alors tenté de détruire tous les objets de la création pour liberer la mémoire, mais rien n'y a fait ! (un bug de crosoft ? noooooon...)
La seule solution que j'ai trouvé, et qui fonctionne, c'est de copier avant toute chose l'image dans un fichier temporaire sur le PC, et de faire pointer la picturebox vers ce fichier. Et là, miracle, la mémoire ne sature jamais !
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 17 août 2005 à 18:44
Scrute la mémoire par CTRL + ALT + SUPPR voir déjà si elle ne fait que monter ou pas à chaque nouvelle image.
Si ce n'est pas cà, toujours dans le gestionnaire des tâches de
Windows, affiche le type "Objets Graphiques", ca correspond au nombre
d'objets graphiques GDI qu'utilise ton prog, ca peut aussi venir de cà !
Bien se rappeller : après chaque SelectObject, il faut récupèrer
l'ancien objet et le détruire ! (c'est souvent la cause d'une
saturation du nombre d'objets graphiques, limité à 10 000 par processus
il me semble).
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
pepsidrinker
Messages postés151Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention15 avril 2009 17 août 2005 à 19:37
bah voici mon code si sa peut vous aider :
(c'est dans un fichier class, ke jutiliserai comme DLL plus tard)
:
le sub FLIP (comme dans DX, mais en VB:))
Public Sub Flip(DestHDC As Long, Width As Long, Height As Long, DestX As Long, DestY As Long)
DoEvents
BitBlt DestHDC, DestX, DestY, Width, Height, BBDC, 0, 0, vbSrcCopy
Sleep 10
DoEvents
End Sub
et le sub UnloadGraphic:
Public Sub UnloadGraphic(hdc As Long)
DeleteObject hdc
DeleteDC hdc
End Sub
en passant, oui, jarrive a storer limage sur le pc, seulement, je réduis mon FPS (frame per second) dans mon jeu de beaucoup...:(:(