Page 1 sur 1

[RÉSOLU] Enregistrer écran

Publié : mer. 20/mai/2026 11:43
par Stan_fr
Bonjour,

Je m'essaie aux sprites, et j'aimerais pouvoir enregistrer ce qui se passe, soit sous forme d'images isolées, soit dans un MP4 (ou autre) mais je n'arrive pas à trouver comment faire.

Quelqu'un pourrait-il m'aider ?

Merci d'avance.

Re: Enregistrer écran

Publié : mer. 20/mai/2026 15:50
par Stan_fr
Résolu : il suffit de créer un sprite de la taille de l'écran en faisant un grabSprite, puis de le sauver !

Re: Enregistrer écran

Publié : jeu. 21/mai/2026 20:01
par Ar-S
ça c'est fait :lol:

Re: Enregistrer écran

Publié : ven. 22/mai/2026 10:23
par Stan_fr
Oui ; toutes mes excuses, j'aurais du préciser que j'ai trouvé la solution grâce à toi !! :oops:


Par contre, j'ai encore un pb : comment utiliser le debugger, quand on a un écran couvrant l'intégralité de l'écran physique :
J'ai un second écran configuré en extension du bureau du premier (sous win10), mais je ne vois pas comment y faire afficher une fenêtre de débug ?

Re: Enregistrer écran

Publié : ven. 22/mai/2026 12:07
par Ar-S
Oui ; toutes mes excuses, j'aurais du préciser que j'ai trouvé la solution grâce à toi !!
Ah bon ?

Lance un code d'openwindow classic et ton debug s'ouvrira. Tu le glisses sur le second ecran.
Le debug s'ouvre normalement au dernier endroit ou il a été placé.

Re: Enregistrer écran

Publié : sam. 23/mai/2026 9:53
par venom
Ar-S a écrit : ven. 22/mai/2026 12:07 Le debug s'ouvre normalement au dernier endroit ou il a été placé.
Ouep :wink:

Stan_fr lance un autre code qui appel le débug et déplace la fenêtre sur ton second écran. A partir de là il s'ouvrira sur le second écran






@++

Re: Enregistrer écran

Publié : sam. 23/mai/2026 12:02
par Stan_fr
Merci !

Mais ça ne permet pas de comprendre pourquoi mon pgm, affiche ce à quoi je veux arriver, et par contre quand j'enregistre les images ça ne va pas ?

Code : Tout sélectionner

; PGM Censé afficher des sprites qui tournent et enregistrer les images dans des fichiers 
; situés à la racine du disque défini dans la variable DISC$, l'affichage ça va, mais les 
; fichiers enregistrés sont bizarres....

UsePNGImageEncoder()

;{ CONSTANTES
#BDLA = 2       ; Largeur de bordure
#CARRE = 0      ; 0 : sprites carrés, 1 sprites rectangulaires
#COTS = 120     ; METTRE ICI LE PGCD DE LAREC et HAUREC
#HAUREC = 1080  ; Hauteur écran
#LAREC = 1920   ; Largeur écran
#NBSPRI = 100   ; Nombre max de sprites
#ECRAN = 500    ; Sprite contenant l'écran

;}


;{ STRUCTURES
Structure msp     ; Sprite carré
  cot.i           ; Côté du sprite
  mode.i          ; Option se dessin du sprite
  num.i           ; Numéro du sprite
  X.f             ; X du sprite
  Y.f             ; Y du sprite
EndStructure
;}


;{ VARIABLES

DISC$ = "E:\"

lcot.i = #COTS 
n1.i = Int(#LAREC / #COTS)
n2.i = Int(#HAUREC / #COTS)
DecaY.i = Int ((#HAUREC - n2*#COTS)/2)

DecaX.i = n3
;}

;{ création du contexte

; Ouverture fenêtre
If OpenWindow(0,0,0,#LAREC,#HAUREC,"wwwww",#PB_Window_BorderLess)= 0
  End
EndIf

;Initialisation des sprites, du clavier et de la souris 
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  MessageRequester("Erreur", "Impossible d'initialiser l'écran.")
  CloseWindow(#PB_All)
  End
EndIf

;Ouverture de l'écran
If OpenScreen(#LAREC,#HAUREC,32,"Exemple OpenScreen",PB_Screen_WaitSynchronization) = 0
  MessageRequester("Erreur", "Impossible d'ouvrir l'écran.")
  CloseScreen()
  CloseWindow(#PB_All)
  End
EndIf

;} 

;{ création des sprites
nb_sp = n1*n2
Dim s_p.msp(nb_sp+1)
Num_ecran = nb_sp+1

CreateSprite( Num_ecran, #LAREC, #HAUREC, #PB_Sprite_AlphaBlending ) ; Fond d'écran

For i = 0 To nb_sp ; Petits sprites
  
  If CreateSprite(i, #COTS, #COTS, #PB_Sprite_AlphaBlending ) ; Resultat = CreateSprite(i, #COTS, #COTS, #PB_Sprite_AlphaBlending )
    s_p(i)\num = i
    s_p(i)\cot = #COTS
    s_p(i)\mode = #PB_Sprite_AlphaBlending
    
  Else
    MessageRequester("Erreur", "Création sprites")
    CloseScreen()
    CloseWindow(#PB_All)
    End
  EndIf
Next ; i = 0 To nb_sp
;}

;{ Init des spritesA$

ClearScreen(RGB(255, 0, 0)) ; fond uni rouge
;FlipBuffers()

For j = 0 To nb_sp ; - 1
  
  
  StartDrawing(SpriteOutput(s_p(j)\num)) 
  
  If j%2 
    Box(0,0, #COTS, #COTS, RGBA(255,0,0,0))  
    Ellipse(#COTS/2,#COTS/2, (#COTS-38)/2, #COTS/4, RGBA(0, 0, 255, 255)) ; ellipse bleue
    
  Else
     Box(0,0, #COTS, #COTS, RGBA(255,0,0,0))
    Ellipse(#COTS/2,#COTS/2, (#COTS-38)/2, #COTS/4, RGBA(0, 255, 0, 255)); Ellipse verte
    
  EndIf
  StopDrawing()
  
  
Next ; j = 0 To nb_sp - 1
;}

FlipBuffers()

ClearScreen(RGB(255, 0, 0)) ; Un rouge fond uni
FlipBuffers()

GrabSprite(Num_ecran, 0, 0, #LAREC, #HAUREC)
A$ = DISC$ + "FOND_ECRAN.bmp"    
SaveSprite(Num_ecran, A$, #PB_ImagePlugin_BMP)

nump_spri = 0

;{ Affichage des sprites
For kk = 0 To 360 Step 36 
  ClearScreen(RGB(255, 0, 0)) ; fond uni rouge

  For j = 0 To nb_sp

    RotateSprite(s_p(j)\num, kk, #PB_Absolute) ;
  Next ; j = 0 To nb_sp 
  
  For j = 0 To nb_sp ;- 1
    k = j % n1
    l = j / n1
    s_p(j)\X = k * #COTS ; + 10
    s_p(j)\Y = l * #COTS ; + DecaY
    
    DisplaySprite(j, s_p(j)\X,s_p(j)\Y)
    
    If j = nb_sp-1
      GrabSprite(#ECRAN, 0, 0, #LAREC, #HAUREC)
      A$ = DISC$ + "ecran"+ Str(nump_spri) + ".png"    
      SaveSprite(#ECRAN, A$, #PB_ImagePlugin_PNG)
    nump_spri + 1
    EndIf
    k = j % n1
    l = j / n1
  Next ; j = 0 To nb_sp 

  FlipBuffers()
  

Next ; kk = 0 To 360
 
;}

Repeat
  ExamineKeyboard()  
Until KeyboardPushed(#PB_Key_Escape) ; On quitte l'application en  appuyant sur la touche Echap (ESC)
End




Une idée :?: