progetto:
player video che si puo' mettere in pausa (con la barra spaziatrice) e con il mouse, disegnare sopra il frame visualizzato.
poi riprendere il play permettendo al disegno di rimanere visualizzato (o no) ...
il doppio comportamento potrebbe essere "space fa una cosa" mentre "shift e space" ne fa un'altra.
Domanda:
essendo pigro, gb.media.form (player gia' fatto) con sovrapposta una drawing area e' una buona idea?
... lo chiedo perche' anche mettendo .noBackground=true e .background=none (vuoto) .. mi rimane sempre opaco (con sovrapposto il nome del file che apro nel player).
Public Sub DrawingArea_disegno_DblClick()
Dim path As String
Dialog.Title = "Choose a video file"
Dialog.Filter = ["*.mkv;*.mp4;*.h264", "video files"]
If Not Dialog.OpenFile() Then
path = Dialog.Path
Else
Return
Endif
MediaView_Video.URL = path
End
.background=none (vuoto)
...semmai:
.background = Color.Transparent
Qualunque componente anche se trasparente andrebbe a nascondere MediaView (almeno credo).
Forse potresti usare una textlabel e scrivere nella barra nera o appena sopra (vedi immagini allegate) a seconda di dove posizioni l'altezza:
Public Sub Form_Resize()
MediaView1.W = Me.W - 24
MediaView1.H = Me.H - 48
TextLabel1.Text = "Video di Aleg"
TextLabel1.X = (MediaView1.W - TextLabel1.W) \ 2
TextLabel1.Y = MediaView1.H - (TextLabel1.H + 20)
'TextLabel1.Y = MediaView1.H - (TextLabel1.H + 40)
End
P.S. Scusa se ho perso una elle :-[
In alternativa alle risorse offerte dal Componente gb.media.form, potresti utilizzare le capacità dell'Oggetto WebView di eseguire un file audio/video, soprapponendovi quindi una DrawingArea per disegnare qualcosa.
L'Oggetto WebView fornisce automaticamente, fra l'altro, una risorsa per arrestare, porre in pausa e riprendere l'esecuzione del video.
Vediamo un esempio pratico:
Private WebView1 As WebView
Private da As DrawingArea
Private OldX As Single
Private OldY As Single
Private StartX As Single
Private StartY As Single
Private punti As New Integer[]
Public Sub Form_Open()
' Crea una "WebView" come oggetto GUI da usare per l'uscita video:
With WebView1 = New WebView(Me)
.X = 10
.Y = 10
.W = 480
.H = 480
End With
' Crea una DrawingArea sulla quale disegnare delle linee rosse:
With da = New DrawingArea(Me) As "da"
.X = WebView1.X
.Y = WebView1.Y
.W = WebView1.W
.H = WebView1.H - 80
.Background = Color.Transparent
End With
End
Public Sub Button1_Click()
' Carica ed esegue il file video:
WebView1.Url = "/percorso/del/file/video"
End
Public Sub da_Draw()
Dim i As Integer
With Draw
.Foreground = Color.Red
.Line(StartX, StartY, OldX, OldY)
For i = 0 To punti.Max Step 4
.Line(punti[i], punti[i + 1], punti[i + 2], punti[i + 3])
Next
.End
End With
End
Public Sub da_MouseDown()
StartX = Mouse.X
StartY = Mouse.Y
OldX = StartX
OldY = StartY
End
Public Sub da_MouseMove()
OldX = Mouse.X
OldY = Mouse.Y
da.Refresh()
End
Public Sub da_MouseUp()
punti.Push(StartX)
punti.Push(StartY)
punti.Push(OldX)
punti.Push(OldY)
End