fosforo (Normal User)
Expert
Messaggi: 391
Iscritto: 06/04/2009
|
Ciao
Scusate la domanda da neofita.
Sto cercando di costruire un Player con VB.net con VLC.
Dovrei replicare la barra di scorrimento.
Ho inserito una TrackBar e do i valori con AxVLCPlugin21.input.Position.
Il trackbar funziona ma non so come aggiornarlo.
Metto il mio povero script.
Private Sub TrackBar2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar2.Scroll
If AxVLCPlugin21.input.Length > 0 Then
TrackBar2.Minimum = 0
TrackBar2.Maximum = 100
TrackBar2.Value = (AxVLCPlugin21.input.Position * 100.0)
End If
End Sub
Grazie
|
|
GN (Member)
Guru
Messaggi: 772
Iscritto: 30/04/2011
|
In che senso aggiornare? Il tuo codice fa questo: quando l'utente muove la barra (TrackBar2.Scroll), a questa viene assegnata la posizione del lettore. Semmai dovrebbe essere il contrario: quando l'utente muove la trackbar, il player dovrebbe spostarsi, quindi dovresti mettere questo
Codice sorgente - presumibilmente Plain Text |
AxVLCPlugin21.input.Position = Trackbar2.Value\100
|
al posto di questo
Codice sorgente - presumibilmente Plain Text |
TrackBar2.Value = (AxVLCPlugin21.input.Position * 100.0)
|
(però non conosco l'activex di vlc quindi non sono sicuro che funzioni, magari c'è da usare qualche metodo per settare la posizione).
Invece per fare avanzare la barra con il lettore dovresti trovare qualche evento ci quest'ultimo che venga generato al cambio di posizione; se non c'è, metti un timer che aggiorna la barra ogni secondo.
Ah, questo
Codice sorgente - presumibilmente Plain Text |
TrackBar2.Minimum = 0
TrackBar2.Maximum = 100
|
non c'è bisogno che lo fai a ogni movimento, basta che imposti le relative proprietà nella finestra di progettazione o al Form_Load. |
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Penso che per "aggiornalo" intenda far incrementare il Value della Trackbar con il Value del video!
Dovresti cercare se c'è una funzione del plugin VLC, ad esempio:
Codice sorgente - presumibilmente VB.NET |
Private sub VLC_VideoValue(etc, etc) etc 'Qui inserisci Trackbar.value = VLC.output.position End Sub
|
|
|
fosforo (Normal User)
Expert
Messaggi: 391
Iscritto: 06/04/2009
|
Ciao
Innanzitutto grazie per la risposta.
Il mio problema è il l'aggiornamento della posizione del Trackbar.
Si aggiorna solo se ci clikko sopra mentre dovrebbe essere aggiornato sempre.
I valori che gli passo sono corretti:
TrackBar2.Value = (AxVLCPlugin21.input.Position * 100.0)
Infatti quando ci clikko sopra prende la giusta posizione.
|
|
LittleHacker (Member)
Guru
Messaggi: 1033
Iscritto: 28/04/2009
|
Postato originariamente da fosforo:
Ciao
Innanzitutto grazie per la risposta.
Il mio problema è il l'aggiornamento della posizione del Trackbar.
Si aggiorna solo se ci clikko sopra mentre dovrebbe essere aggiornato sempre.
I valori che gli passo sono corretti:
TrackBar2.Value = (AxVLCPlugin21.input.Position * 100.0)
Infatti quando ci clikko sopra prende la giusta posizione. |
Però quel codice non è esatto, facendo così tu dai al trackbar il valore del video quando clicchi sulla trackbak, invece è meglio se usi quello postato da GN!
Quello che usi te, puoi usarlo con un Timer per aggiornare il valore della trackbar con il valore del video! |
|
GN (Member)
Guru
Messaggi: 772
Iscritto: 30/04/2011
|
Postato originariamente da LittleHacker:
Puoi usarlo con un Timer per aggiornare il valore della trackbar con il valore del video! |
Si intendevo quello, scusate se mi sono spiegato male; dicevo un timer oppure, se il controllo di vlc ha un evento generato al cambio di posizione, di usare quello. |
|
fosforo (Normal User)
Expert
Messaggi: 391
Iscritto: 06/04/2009
|
Ciao
Purtroppo non sono cosi avanti
Ho capito perfettamente le cose che mi avete detto e difatti ora controllo il filmato attraverso la TrackBar
Quello che non capisco ancora sono alcune logiche di come funziona VB.
Es:
Ho messo una ProgressBar e passo i dati attraverso il mio script:
Private Sub ProgressBar1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
ProgressBar1.Value = AxVLCPlugin21.input.Position * 100
End Sub
Quello che non capisco è come tenere aggiornato il ProgressBar durante il PLAY.
In questo momento per vederlo avanzare devo cliccaerci sopra.
|
|
GN (Member)
Guru
Messaggi: 772
Iscritto: 30/04/2011
|
Con il tuo codice, la riga
Codice sorgente - presumibilmente Plain Text |
ProgressBar1.Value = AxVLCPlugin21.input.Position * 100
|
viene eseguita quando l'utente clicca la barra, perchè il codice si trova appunto nell'evento ProgressBar1.Click.
Per fare in modo che si aggiorni sempre, quella riga va eseguita a intervalli regolari, ad esempio un secondo. Per fare ciò basta che metti un timer nel form e setti il suo interval (in millisecondi): ogni X millisecondi lui genererà un'evento tick (lo puoi trovare nella scheda eventi, facci doppio clic per generare il relativo codice), è li che devi mettere la riga di codice che aggiorna la progressbar.
|
|
fosforo (Normal User)
Expert
Messaggi: 391
Iscritto: 06/04/2009
|
Mi scuso se sono cosi impreparato ma sono agli inizi.
Il mio scrpt funziona solo se , mentre la clip è in play, clicco sopra il ProgressBar.
Come se dovessi renderlo attivo tramite un click.
Una volt cliccato il PrograssBar funziona benissimo seguendo il valore passato dal mio script ma il resto delle funzioni e dei pulsanti, PLAY, PAUSE, STOP etc non funzionano più.
Come se la funzione While prendesse la priorità su tutto il resto dello script.
|
|