come da titolo la riproduzione del video mi prende tutto il form invece che essere confinato nella area opportuna ....
copiando un po' dal wiki di vuott:
' Gambas class file
Private mp As New MediaPlayer As "mp"
Private uscitaVideo As MediaControl
Private iVis As Integer ' Modificando il valore della seguente variabile integer si modifica anche il tipo di visualizzazione
poi in form_open:
'ora inizializza il media player per renderizzare il filmato
iVis = 1 'semplice riproduzione senza effetti
' Istanzia il controllo di uscita video da usare. In questo caso sarà "ximagesink",
' un "videosink" basato sullo standard X, e che è esso stesso un plug-in:
uscitaVideo = New MediaControl(mp, "ximagesink")
' Imposta il controllo perche' disegni i fotogrammi su un particolare oggetto:
uscitaVideo.SetWindow(DrawingArea_Preview, 0, 0, DrawingArea_Preview.Width, DrawingArea_Preview.Height)
'uscitaVideo.SetWindow(PictureBox1.Handle)
' gli dico quale e' il file da riprodurre:
mp.URL = Media.URL(DrawingArea_Preview.Tag)
'e gli dico che lo deve "sparare" su uscitavideo
mp.Video.Output = uscitaVideo
'inizializzo la barra di scorrimento
Slider_Position.MaxValue = CInt(mp.Duration) + 1
ma poi se premo il bottone play:
mp.Play
timer_posizione.Start
... IL FILMATO MI PRENDE TUTTA L'AREA DELLA FINESTRA DEL FORM .....
screenshot prima del play e dopo in allegato
ho copiato-incollato il tuo esempio nel wiki di cui riporto il codice integrale :D
' Gambas class file
Private mp As New MediaPlayer As "mp"
Private uscitaVideo As MediaControl
Private arrVis As MediaControl[] ' Un array di variabili di tipo "MediaControl", ossia di vari PlugIn disponibili
Private iVis As Integer ' Modificando il valore della seguente variabile integer si modifica anche il tipo di visualizzazione
Public Sub _new()
End
Public Sub Form_Open()
avviaPlugin()
' Questa ripetizione ci evita di dover "incrementare" automaticamente il valore della variabile "iVis":
iVis = 2
aggioVis()
' Si dice al MediaControl di mostrare il proprio output (gli effetti video) in uno specifico controllo GUI, solitamente una DrawingArea:
uscitaVideo.SetWindow(fmain)
With mp
.URL = Media.URL("/home/allegfede/Videos/RUZZENENTI.mpg")
.Play
End With
iVis = 1
' Va ad aggiornare la visualizzazione dell'effetto con un plug-in:
aggioVis()
End
Public Sub avviaPlugin()
' Istanzia il controllo di uscita video da usare. In questo caso sarà "ximagesink",
' un "videosink" basato sullo standard X, e che è esso stesso un plug-in:
uscitaVideo = New MediaControl(mp, "ximagesink")
' Imposta il controllo di uscita video da usare:
mp.Video.Output = uscitaVideo
arrVis = New MediaControl[]
' Nella variabile array di tipo "MediaControl" vengono aggiunti i diversi PlugIn disponibili.
' Il primo elemento dell'array deve essere sostanzialmente vuoto. Se si sceglie questa opzione, non sarà visualizzato alcun motivo:
aggiunVis("", "")
' Ecco alcuni disponibili:
aggiunVis("goom", "Goom")
aggiunVis("libvisual_bumpscope", "Bump")
aggiunVis("libvisual_corona", "Corona")
aggiunVis("libvisual_infinite", "Infinite")
aggiunVis("libvisual_jakdaw", "Jakdaw")
aggiunVis("libvisual_jess", "Jess")
' Monoscopio è un plugin che consente di visualizzare una forma d'onda altamente stabilizzata di ingresso audio
aggiunVis("monoscope", "Mono")
aggiunVis("libvisual_oinksie", "Oinksie")
aggiunVis("libvisual_lv_scope", "Scope")
aggiunVis("spacescope", "Space")
aggiunVis("spectrascope", "Spectra")
aggiunVis("synaescope", "Synae")
' Oscilloscopio a forma d'onda semplice:
aggiunVis("wavescope", "Wave")
iVis = 1
aggioVis()
End
Public Sub aggiunVis(tipoPlug As String, titolo As String)
Dim hVis As MediaControl
' La variabile "tipoPlug" contiene il tipo di plug'in...
If tipoPlug Then hVis = New MediaControl(mp, tipoPlug)
' ...che viene aggiunta agli elementi della omogenea variabile array:
arrVis.Add(hVis)
Catch
Error tipoPlug; ": "; Error.Text
End
Public Sub aggioVis()
Dim hVis As MediaControl = arrVis[iVis]
' Imposta il plug-in da utilizzare:
mp.Video.Visualisation = hVis
' Anche qui viene impostata la "DrawingArea", ove mostrare gli effetti video:
uscitaVideo.SetWindow(FMain)
End
questo il risultato nella debug window:
The program 'testgbmedia2' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.
(Details: serial 17 error_code 3 request_code 3 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
bohhhh