(ces dernier temps, je suis obnubilé par les fenêtres transparentes on dirait... )
Vous pouvez redimensionner la fenêtre pour capturer une zone plus grande de l'écran. Pour l'instant il faut ajouter manuellement l'extension du fichier image quand on l'enregistre, et c'est seulement du png... Bon c'est un premier jet d'un truc que j'ais fait pour passer le temps, donc...
Et vous verrez y'a une petite anim'
Code : Tout sélectionner
#GWL_EXSTYLE = -20
#GWL_STYLE = -16
#WS_EX_LAYERED = 524288
#LWA_ALPHA = 2
#LWA_COLORKEY = 1
Prototype.i Proto_SetWindowLong_(hWnd,nIndex.i, NewLong.l)
Prototype.b Proto_SetLayeredWindowAttributes_(hWnd,ColorKey,Alpha.b,Flags.w)
If OpenLibrary(1,"user32.dll")
If GetFunction(1,"SetWindowLongW")
SetWindowLong_.Proto_SetWindowLong_ = GetFunction(1,"SetWindowLongW") ;on charge la fonction
Else
MessageRequester("Erreur","Fonction inexistante",16)
EndIf
SetLayeredWindowAttributes_.Proto_SetLayeredWindowAttributes_ = GetFunction(1,"SetLayeredWindowAttributes")
Else
MessageRequester("Erreur","Erreur d'accés a user32.dll.",16)
EndIf
Enumeration
#Capture
#Img_captured
#New
#img_view
#yes
#no
EndEnumeration
UsePNGImageEncoder()
InitSound()
Global hCaptureBMP
Procedure.l LoadSound_net_cliclac();Un peu modifié, puisque DropBox ajoute un argument aprés le fichier, ici "?dl=1".
; By Dobro
;Adr$=adresse du fichier image a charger
;nom_fichier$ = nom qu'on donne a ce son
; la procedure renvoi l'Id du son recupéré ou False en cas d'erreur
Protected sound,path$
InitNetwork()
path$=GetTemporaryDirectory()
If ReceiveHTTPFile("https://www.dropbox.com/s/6l0vl6wl4eaou7e/ClicClacPhoto.wav?dl=1", path$+"tmp_ClicClacPhoto.wav");Pour télécharger depuis DropBox, collez le lien de votre fichier et changez dl=0 en dl=1
sound=LoadSound(#PB_Any, path$+"tmp_ClicClacPhoto.wav")
;DeleteFile(path$+"tmp_ClicClacPhoto.wav")
ProcedureReturn sound
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure CaptureScreenPart(Left.l,Top.l,width.l,height.l) ; CaptureScreenPart : Returns pointer to BMP SnapShot
dm.DEVMODE
BMPHandle.l
srcDC = CreateDC_("DISPLAY", "", "", dm)
trgDC = CreateCompatibleDC_(srcDC)
BMPHandle = CreateCompatibleBitmap_(srcDC, width, height)
SelectObject_( trgDC, BMPHandle)
BitBlt_( trgDC, 0, 0, width, height, srcDC, Left, Top, #SRCCOPY)
DeleteDC_( trgDC)
ReleaseDC_( BMPHandle, srcDC)
CaptureScreenHeight=height
CaptureScreenWidth=width
CaptureScreenBMPHandle=BMPHandle
ProcedureReturn BMPHandle
EndProcedure
Procedure SaveCapture(File.s, ImagePlugin , JpegCompression) ; Saves previous capture to file
If CaptureScreenBMPHandle
Id=CreateImage(#PB_Any, CaptureScreenWidth, CaptureScreenHeight)
StartDrawing(ImageOutput(Id))
DrawImage(CaptureScreenBMPHandle,0,0)
StopDrawing()
Select ImagePlugin
Case #PB_ImagePlugin_JPEG
UseJPEGImageEncoder()
retour=SaveImage(Id, File,#PB_ImagePlugin_JPEG,JpegCompression)
Case #PB_ImagePlugin_PNG
UsePNGImageEncoder()
retour=SaveImage(Id, File,#PB_ImagePlugin_PNG)
Default
retour=SaveImage(Id, File)
EndSelect
FreeImage(Id)
EndIf
ProcedureReturn retour
EndProcedure
Procedure SaveImageRequest()
ImgWidth = WindowWidth(1)
ImgHeight = WindowHeight(1)
OpenWindow(2,0,0,ImgWidth+20,ImgHeight+45,"Sauvegarder cette capture ?",#PB_Window_ScreenCentered | #PB_Window_Tool)
CanvasGadget(#img_view,10,10,ImgWidth,ImgHeight,#PB_Canvas_Border)
ButtonGadget(#yes,ImgWidth/2-55,ImgHeight + 10,50,20,"Oui")
ButtonGadget(#no,ImgWidth/2+5,ImgHeight + 10,50,20,"Non")
StartDrawing(CanvasOutput(#img_view))
DrawImage(hCaptureBMP,0,0)
StopDrawing()
Repeat
event2=WaitWindowEvent()
Select event2
Case #PB_Event_Gadget
Select EventGadget()
Case #yes
CloseWindow(2)
ProcedureReturn 1
Case #no
CloseWindow(2)
ProcedureReturn 0
EndSelect
EndSelect
ForEver
EndProcedure
OpenWindow(1,0,0,600,400,"DeskCam",#PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget)
Clic = LoadSound(#PB_Any,GetTemporaryDirectory()+"tmp_ClicClacPhoto.wav")
If Not Clic
Clic = LoadSound_net_cliclac()
EndIf
SetWindowColor(1,RGB(255,0,0))
SetWindowLong_(WindowID(1),#GWL_EXSTYLE,#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(1),RGB(255,0,0),1,#LWA_COLORKEY)
ButtonGadget(1,10,10,80,25,"Capture")
Repeat
event=WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
HideGadget(1,1)
hCaptureBMP=CaptureScreenPart(WindowX(1,#PB_Window_InnerCoordinate),WindowY(1,#PB_Window_InnerCoordinate),WindowWidth(1),WindowHeight(1))
If Clic <> 0
PlaySound(Clic)
EndIf
For i = WindowWidth(1) To 10 Step -10
StartDrawing(WindowOutput(1))
Box(0,0,OutputWidth(),OutputHeight(),$000000)
Circle(OutputWidth()/2,OutputHeight()/2,i,$0000FF)
StopDrawing()
Delay(6)
Next
For i = 10 To WindowWidth(1) Step 10
StartDrawing(WindowOutput(1))
Box(0,0,OutputWidth(),OutputHeight(),$000000)
Circle(OutputWidth()/2,OutputHeight()/2,i,$0000FF)
StopDrawing()
Delay(20)
Next
StartDrawing(WindowOutput(1))
Box(0,0,OutputWidth(),OutputHeight(),$0000FF)
StopDrawing()
HideGadget(1,0)
If SaveImageRequest() = #True
file$=SaveFileRequester("Enregistrer l'image","Capture.png","Image PNG (.png)|*.png|Image compressée JEPG (.jpg , .jepg)|*.jepg;*.jpg|Image bitmap (.bmp)|*.bmp",0)
SaveCapture(file$,#PB_ImagePlugin_PNG,0)
EndIf
EndSelect
EndSelect
Until event = #PB_Event_CloseWindow