Page 1 sur 1
SaveScreen
Publié : jeu. 25/août/2005 18:27
par kelly
je travaille sur un OpenScreen(1024,768,32,"")
Et je n'arrive pas a sauver l'image present a l'ecran !!
Ca me dit tt le temps "image objets not initialised"
je vais mourir...

Publié : jeu. 25/août/2005 19:05
par scaraber
tu doit metre un initsprite ou un autre init je pence
Publié : jeu. 25/août/2005 19:17
par Dr. Dri
tu t'y prends comment pour enregistrer ?
Dri
Publié : jeu. 25/août/2005 20:54
par kelly
Bin, j'ai trouvé un dérivé mais ce n'est pas la procedure ideale. Je grab l'ecran en sprite et je save le sprite.
Publié : jeu. 25/août/2005 21:04
par Dr. Dri
ca marche maintenant ?
sinon met du code et je pourrais jeter un coup d'oeil...
"ca marche pas" ca m'aide pas lol
Dri

Publié : ven. 26/août/2005 8:33
par lionel_om
QQ1 avait déja posé la question (je sais plus si c t moi

).
En tout cas j'ai gardé sur mon DD les réponses :
Code : Tout sélectionner
repeat
...
clearscreen(...)
...
displaysprite(...)
...
flipbuffers(...)
if keyboardreleased(#PB_Key_S)
snap + 1
snapid = grabsprite(#pb_any, 0, 0, ..., ...)
savesprite(snapid, "snap_"+str(snap)+".bmp")
freesprite(snapid)
endif
...
until ...
ce code pertmet de rajouter de la transparence (je crois)
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 3.9
;
; Explication du programme :
; Faire une copie d'écran
#CAPTUREBLT = $40000000
Procedure SetWinTransparency(WinHandle.l, Transparency_Level.l)
If OpenLibrary(0, "user32.dll")
CallFunction(0, "SetLayeredWindowAttributes", WinHandle, 0, Transparency_Level, 2)
CloseLibrary(0)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Plein écran")
SetWindowLong_(WindowID(), #GWL_EXSTYLE, GetWindowLong_(WindowID(), #GWL_EXSTYLE) | $00080000) ; #WS_EX_LAYERED = $00080000
SetWinTransparency (WindowID(), 180)
; Pour changer le niveau de transparence de la fenêtre
; Le niveau de transparence doit être compris entre 1 (transparence totale) et 255 (opaque)
Repeat
Event = WaitWindowEvent()
Until Event = #WM_CLOSE
EndIf
Ecran_Largeur = GetSystemMetrics_(#SM_CXSCREEN)
Ecran_Hauteur = GetSystemMetrics_(#SM_CYSCREEN)
DC = GetDC_(0)
CreateImage(0, Ecran_Largeur, Ecran_Hauteur)
Dessin = StartDrawing(ImageOutput())
BitBlt_(Dessin, 0, 0, Ecran_Largeur, Ecran_Hauteur, DC, 0, 0, #SRCPAINT|#CAPTUREBLT)
StopDrawing()
ReleaseDC_(0, DC)
SaveImage(0, "Copie d'écran.bmp")
Delay(2000)