ScreenShoot partiel
ScreenShoot partiel
Quelle est la méthode la plus simple pour screenshooter un petit morceau de ce qu'il y a a l'ecran ?? (style ce qu'il y a de (12,15 to 30,33))
hmmm, je vais etre plus précis : comme il s'agit d'etre TRES reactif, mon programme doit en fait analyser non pas un morceau de l'ecran mais a la limite un seul pixel. Il attend que le pixel change de couleur et hop, il passe AU PLUS VITE a la suite.
Je pense que lire ce pixel en memoire video sera la meilleure methode. Mais quelqu'un pourrait il rapeller comment on examine un pixel en mem video ?
merci
Je pense que lire ce pixel en memoire video sera la meilleure methode. Mais quelqu'un pourrait il rapeller comment on examine un pixel en mem video ?
merci

Teste ça ( Code de ?? )
Code : Tout sélectionner
;{ GetPixelColor (Start)
; Return the RGB color of the pixel at the specified coordinates
; or #CLR_INVALID (-1) if coordinates is outside the screen
ProcedureDLL GetPixelColor(x,y)
sysviewDC = GetDC_( hwndSysview )
ProcedureReturn GetPixel_( sysviewDC,x, y )
EndProcedure
MERCI
Merci, ca marche.
Pour que tout le monde en profite :

Pour que tout le monde en profite :
Code : Tout sélectionner
InitMouse()
InitKeyboard()
OpenConsole()
PrintN("Pointez un pixel")
old=-1
Repeat
Delay(2)
lpPoint.POINT
GetCursorPos_(lpPoint)
X=lpPoint\x
Y=lpPoint\y
sysviewDC = GetDC_( hwndSysview )
rvb=GetPixel_( sysviewDC , X , Y )
If rvb<>old
PrintN("RVB="+Str(rvb)+" R:"+Str(Red(rvb))+" V:"+Str(Green(rvb))+" V:"+Str(Blue(rvb)))
old=rvb
EndIf
ForEver
Si je dis pas de bêtise, il faut libérer le DC avec ReleaseDC_() systèmatiquement. Sinon voici un autre example.
Code : Tout sélectionner
Macro StrC(c)
Str(Red(c))+", "+Str(Green(c))+", "+Str(Blue(c))
EndMacro
Define mouse.POINT, screen.l, color.l, old.l = -1
If OpenWindow(0, 0, 0, 200, 45, "GetPixel", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
StickyWindow(0, #True)
CreateGadgetList(WindowID(0))
TextGadget(0, 15, 15, 170, 15, "", #PB_Text_Center)
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
Break
Case #Null
If GetCursorPos_(mouse)
screen = GetDC_(#Null)
If screen
color = GetPixel_(screen, mouse\x, mouse\y)
If color <> #CLR_INVALID
If color <> old
SetGadgetText(0, StrC(color))
SetGadgetColor(0, #PB_Gadget_BackColor, color)
old = color
EndIf
EndIf
ReleaseDC_(#Null, screen)
EndIf
EndIf
EndSelect
ForEver
EndIf
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52