Probleme :(:(:( bitblt

pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009 - 17 août 2005 à 18:13
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Derniè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:)

Pepsidrinker

4 réponses

scortex84 Messages postés 379 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 20 avril 2011 1
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 !

Bon courage,

Seb.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0
pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 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...:(:(

pitier:(:(

Pepsidrinker
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
17 août 2005 à 20:27
Le problème ne vient sûrement pas de ces fonctions là mais du traitement opéré sur les images avant de les afficher.



Donne nous le code de la fonction appellant ces fonctions.

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
0
Rejoignez-nous