ScreenShoot partiel

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

ScreenShoot partiel

Message par SPH »

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))
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

C'est très simple, le code habituel pour capturer l'image du bureau que tu retailles !
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

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 :x
TersaKen
Messages : 58
Inscription : dim. 05/févr./2006 16:15

Message par TersaKen »

Point(x,y)
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

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
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

MERCI

Message par SPH »

Merci, ca marche. :wink:

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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

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
Image
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

C'est bien aussi de prévoir une sortie de programme Flype! :)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Alt+F4 ;-)
Image
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'avais pas vu le close tout en haut, par habitude je le met toujours en bas!
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

et moi toujours en haut :D
Image
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Rien à voir: SPH, ton cephiroth dans la boue doit être un des phantasme #1 de toutes les loligoth du japon.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

loligoth ?

je connaissais les GolGoth dans Goldorak...
Image
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Flype,

Tu saurais me dire comment récuperer la couleur d'un pixel dans une screen ? (où une image est afficher avec drawimage, donc un pixel de l'image)

Merci pour ton aide.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

wolfjeremy a écrit :Flype,

Tu saurais me dire comment récuperer la couleur d'un pixel dans une screen ? (où une image est afficher avec drawimage, donc un pixel de l'image)

Merci pour ton aide.
point(x,y)=Col ? non c'est pas ça que tu veux ?
Répondre