Differenze tra le versioni di "Disegnare sopra un video"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "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à effett...")
 
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 15: Riga 15:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
  <FONT Color=gray>' ''Crea una "WebView" come oggetto GUI da usare per l'uscita video:''</font>
 
  <FONT Color=gray>' ''Crea una "WebView" come oggetto GUI da usare per l'uscita video:''</font>
Riga 34: Riga 34:
 
   End With
 
   End With
 
    
 
    
  '''End
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
  <FONT Color=gray>' ''Carica ed esegue il file video:''</font>
 
  <FONT Color=gray>' ''Carica ed esegue il file video:''</font>
   WebView1.Url = "/percorso/del/file/video"
+
   WebView1.Url = "<FONT Color=darkgreen>''/percorso/del/file/video''</font>"
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub da_Draw()   
+
  Public Sub da_Draw()   
 
    
 
    
 
   Dim i As Integer  
 
   Dim i As Integer  
Riga 58: Riga 58:
 
   End With       
 
   End With       
 
    
 
    
  '''End''' 
+
  End
 
    
 
    
 
    
 
    
  '''Public''' Sub da_MouseDown()     
+
  Public Sub da_MouseDown()     
 
    
 
    
 
   StartX = Mouse.X   
 
   StartX = Mouse.X   
Riga 68: Riga 68:
 
   OldY = StartY         
 
   OldY = StartY         
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
    
 
    
  '''Public''' Sub da_MouseMove()  
+
  Public Sub da_MouseMove()  
 
    
 
    
 
   OldX = Mouse.X   
 
   OldX = Mouse.X   
Riga 78: Riga 78:
 
   da.Refresh()     
 
   da.Refresh()     
 
    
 
    
  '''End''' 
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub da_MouseUp()  
+
  Public Sub da_MouseUp()  
 
    
 
    
 
   punti.Push(StartX)  
 
   punti.Push(StartX)  
Riga 88: Riga 88:
 
   punti.Push(OldY)  
 
   punti.Push(OldY)  
 
      
 
      
  '''End'''
+
  End

Versione attuale delle 12:07, 20 giu 2024

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