Saturation mémoire avec l'API Getpixel.

bogros Messages postés 6 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 5 novembre 2005 - 7 oct. 2004 à 19:52
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 7 oct. 2004 à 20:27
Bonjour à tous !

J'ai le problème suivant : j'utilise l'API Getpixel pour lire les pixel à l'écran et les écrire dans une picturebox. Pas de soucis, j'ai trouvé du code utile ici.
Par contre, plus la boucle For avance, plus l'application est lente, les pixels s'affichent de plus en plus lentement, et tout à coup, hop ! Saturation mémoire (out of memory). Le problème se produit même si je ne mets pas les pixels dans le picturebox.
D'où cela peut-il venir ?

Voici le code. Merci si vous pouvez m'aider ! Je suis sous XP.

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

Function GetPixelScreenColor(ByVal x As Long, ByVal y As Long)
Dim hDCSrc As Long
Dim RGBPixelColor As Long

hDCSrc = GetDC(0&)
RGBPixelColor = GetPixel(hDCSrc, x, y)
GetPixelScreenColor = RGBPixelColor

End Function

Private Sub Command1_Click()
For i = 0 To 100
For j = 0 To 100
tmp = GetPixelScreenColor(i, j)
Picture1.PSet (i, j), tmp
Next j
Next i
End Sub

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 oct. 2004 à 20:27
GetDC(), il manque son liberateur. Je te laisse aller voir dans MSDN, c'est clairement indique.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous