Disegnare sopra un video
Da Gambas-it.org - Wikipedia.
Versione del 6 apr 2023 alle 23:49 di Vuott (Discussione | contributi)
Mostriamo di seguito una modalità di disegnare sopra un video.
Va precisato che la modalità mostrata non inciderà sui fotogrammi del video, poiché il disegno sarà effettuato su una superficie posta al di sopra di quella adoperata per eseguire il video medesimo. In particolare si utilizzeranno 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