Autore Topic: Spostare immagine...  (Letto 1249 volte)

Offline stefanoxjx

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
Spostare immagine...
« il: 19 Febbraio 2014, 17:07:04 »
Ciao a tutti, sono nuovo di questo forum e di gambas.
Sto facendo qualche prova per capirne qualcosa.
In questo momento stavo cercando di fare una specie di porta foto dove ogni X secondi viene cambiata la foto.
Questa operazione sono riuscito a farla senza problemi, ho inserito in una finestra un PictureBox e un Timer e ogni volta che il Timer viene richiamato,
viene cambiata l'immagine.
Ora, per abbellire un po' la cosa, volevo fare in modo che la PictureBox venisse spostato (scorrendo) tutto in alto o tutto in basso per poi ritornare sempre
scorrendo con la nuova immagine caricata.
Questo non me lo fa e non capisco il perchè.
Potreste per favore dare un'occhiata al codice e dirmi dove sto sbagliando?

Codice: [Seleziona]
PUBLIC Counter AS Integer


PUBLIC SUB Form_Keypress()
    ME.close
END


PUBLIC SUB Form_Open()

  Timer.Delay = 6000
  
  ME.height = 1080
  ME.Width = 1920
  
  Img.Height = ME.Height
  Img.Width = ME.Width
  Img.Y = 0
  
  
  Timer_Timer()
    
END

PUBLIC SUB Timer_Timer()
DIM i AS Integer

FOR i = 1 TO 1080
  Img.y += 1
NEXT

IF Exist("/images/" & CStr(Counter) & ".JPG") = FALSE THEN Counter = 1
Img.picture = Picture["/dati/common/test/Left/" & CStr(Counter) & ".JPG"]
Counter += 1


FOR i = 1 TO 1080
  Img.y -= 1
NEXT


END

Eppure, se inserisco un secondo Timer con durata 1ms ed ogni volta che viene richiamato gli faccio spostare la PicutreBox mentre viene visualizzata la foto, questa viene spostata.
Non capisco perchè all'interno della funzione del timer principale non lo faccia :(
Grazie.
Ciao.


« Ultima modifica: 19 Febbraio 2014, 17:29:39 da stefanoxjx »

Offline stefanoxjx

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
Re: Spostare immagine...
« Risposta #1 il: 19 Febbraio 2014, 17:21:40 »
Dimenticavo, le immagini sono salvate con la sequenza 1.jpg 2.jpg 3.jpg........

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Spostare immagine...
« Risposta #2 il: 19 Febbraio 2014, 17:53:02 »
...a mio avviso:

1) c'è il problema che hai posto nel codice il nome della Classe Timer e non il nome qualsiasi di variabile in quanto suo identificatore (ad esempio: Timer1 );

2) analogo discorso per la subroutine dell'evento _Timer(), nella quale la variabile dell'oggetto Timer che solleva tale evento ha come nome quello generale della sua Classe;

3) non avvii il Timer !

4) qualche problema nel ciclo For...Next.

Facciamo un semplice esempio:
Codice: gambas [Seleziona]

Public Sub Form_Open()

  Timer1.Delay = 2000
  
  Me.height = Desktop.Height
  Me.Width = Desktop.Width

' Coloriamo semplicemente l'oggetto "PictureBox":
  Img.Background = Color.Red

  Timer1.Start()   '  <--- Avvia il Timer

End


Public Sub Timer1_Timer()

  Dim i As Integer

   Img.Y = 1

   Wait 1

   Img.Y = 500

 End




Segnalo anche questa pagina della nostra WIKI sul tema da te posto:
http://www.gambas-it.org/wiki/index.php?title=Oggetti_scorrevoli
« Ultima modifica: 19 Febbraio 2014, 20:34:40 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline stefanoxjx

  • Gamberetto
  • *
  • Post: 3
    • Mostra profilo
Re: Spostare immagine...
« Risposta #3 il: 19 Febbraio 2014, 18:52:03 »
Ti ringrazio molto della risposta.
Mi guardo per bene il link che mi hai passato :)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Spostare immagine...
« Risposta #4 il: 19 Febbraio 2014, 20:29:46 »
Però, poiché tu parli di scorrimento di una PictureBox, allora forse tu cerchi una cosa di questo genere:  :-X

Codice: gambas [Seleziona]

Private a As Short
Private b As Short


Public Sub Form_Open()  
      
   Timer1.Delay = 3

   Me.Height = Desktop.Height  
   Me.Width = Desktop.Width  
      
 ' Coloriamo semplicemente l'oggetto "PictureBox":  
   Img.Background = Color.Red  
      
   Timer1.Start()   '  <--- Avvia il Timer  
      
End  
      
      
Public Sub Timer1_Timer()  

    Img.Y = a
            
    If a = Desktop.Height - Img.Height Then b = -1
    If a = 0 Then b = 1

    a += b

End
« Ultima modifica: 20 Febbraio 2014, 02:15:59 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »