[VB6] Heel scherm GetPixel (snelheids probleem)

Pagina: 1
Acties:

  • Fles
  • Registratie: Augustus 2001
  • Laatst online: 06-04-2023
In VB6 heb ik een applicatie die heel het scherm scant naar de kleur van elke pixel.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public WindowDC As Long

Public Sub getRGB(X As Long, Y As Long)
  Dim Ret As Long
  Dim WindowHandle As Long
  Dim Punt As POINTAPI
  Dim Rechthoekje As RECT
    
  Dim VrolijkKleurtje As Long
    
  Call GetCursorPos(Punt)
  WindowHandle = WindowFromPoint(Punt.X, Punt.Y)
  WindowDC = GetDC(WindowHandle)
    
  Call GetWindowRect(WindowHandle, Rechthoekje)
    
  VrolijkKleurtje = GetPixel(WindowDC, X, Y)
    
  Rood = VrolijkKleurtje And &HFF
  Groen = (VrolijkKleurtje And &HFF00&) \ &H100&
  Blauw = (VrolijkKleurtje And &HFF0000) \ &H10000
End Sub


Deze functie gebruik ik daar voor. Die gooi ik in twee lussen in elkaar, de een doet Y de ander X en dan maar heel het scherm doorlopen.

Ik heb er geen stopwatch bijgehouden maar over 800x600 doet hij vreselijk lang. Sommige pixels wil ik bewerken als die een bepaalde kleur hebben. Is er een die-hard die hier een oplossing voor heeft, om het process een beetje te versnellen?

Hij scant het actieve venster trouwens...

Hmm, het getwindow stuk eruit gaat al een stuk sneller :P maar nog niet snel genoeg natuurlijk.

[ Voor 10% gewijzigd door Fles op 21-05-2003 23:43 ]


Verwijderd

Kijk naar de API calls:

getdibits
setdibits

enz.


http://msdn.microsoft.com...n-us/gdi/bitmaps_7gms.asp

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 09:12

johnwoo

3S-GTE

En om de hDC van je hele scherm op te vragen kun je GetDC(NULL) gebruiken :Y)
De inhoud van die DC kun je dan met GetDIBits naar een bitmap saven.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1