Differenze tra le versioni di "Effetto caleidoscopico di un'immagine PNG con il Componente gb.media"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per ottenere un effetto caleidoscopico di un'immagine di formato PNG con le risorse del Componente ''gb.media'', bisogna utilizzare l'elemento "''kaleidoscope''" della libreri...")
 
 
Riga 4: Riga 4:
 
  Private tb As ToggleButton
 
  Private tb As ToggleButton
 
  Private dr As DrawingArea
 
  Private dr As DrawingArea
  Private imm As String
+
  Private im As String
 
  Private pl As MediaPipeline
 
  Private pl As MediaPipeline
 
   
 
   
 
   
 
   
  '''Public''' Sub _new()
+
  Public Sub _new()
 
    
 
    
 
   Dim w As Integer
 
   Dim w As Integer
 
   Dim h As Integer
 
   Dim h As Integer
 
    
 
    
   imm = "<FONT Color=gray>''/percorso/del/file.png''</font>"
+
   im = "<FONT Color=darkgreen>''/percorso/del/file.png''</font>"
 
    
 
    
   w = ImageStat(imm).Width
+
   w = ImageStat(im).Width
   h = ImageStat(imm).Height
+
   h = ImageStat(im).Height
 
    
 
    
 
   With Me
 
   With Me
Riga 39: Riga 39:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   Dim src, pdc, kal, con1, frz, con2, snk As MediaControl
 
   Dim src, pdc, kal, con1, frz, con2, snk As MediaControl
Riga 49: Riga 49:
 
    
 
    
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = imm
+
   src["location"] = im
 
   pdc = New MediaControl(pl, "pngdec")
 
   pdc = New MediaControl(pl, "pngdec")
 
   kal = New MediaControl(pl, "<FONT Color=#B22222>kaleidoscope</font>")
 
   kal = New MediaControl(pl, "<FONT Color=#B22222>kaleidoscope</font>")
Riga 66: Riga 66:
 
   frz.LinkTo(con2)
 
   frz.LinkTo(con2)
 
   con2.LinkTo(snk)
 
   con2.LinkTo(snk)
 
+
 
  <FONT Color=gray>' ''L'immagine modificata viene mostrata nella "DrawingArea":''</font>
 
  <FONT Color=gray>' ''L'immagine modificata viene mostrata nella "DrawingArea":''</font>
 
   snk.SetWindow(dr)
 
   snk.SetWindow(dr)
   
+
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Tasto_Click()          ' _
+
  Public Sub Tasto_Click()          ' _
 
    
 
    
 
   If tb.Value Then
 
   If tb.Value Then
Riga 85: Riga 85:
 
   Endif
 
   Endif
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 17:15, 30 giu 2024

Per ottenere un effetto caleidoscopico di un'immagine di formato PNG con le risorse del Componente gb.media, bisogna utilizzare l'elemento "kaleidoscope" della libreria di GStreamer.

Mostriamo un semplice esempio:

Private tb As ToggleButton
Private dr As DrawingArea
Private im As String
Private pl As MediaPipeline


Public Sub _new()
 
 Dim w As Integer
 Dim h As Integer
 
 im = "/percorso/del/file.png"
 
 w = ImageStat(im).Width
 h = ImageStat(im).Height
 
 With Me
   .W = w + 200
   .H = w + 100
 End With
 
 With tb = New ToggleButton(Me) As "Tasto"
   .X = Me.w - 30
   .Y = 10
   .W = 30
   .H = 40
   .Background = Color.Green
   .Text = "Start"
 End With
 
 With dr = New DrawingArea(Me)
   .X = 0
   .Y = 0
   .W = w
   .H = h
 End With
  
End


Public Sub Form_Open()
 
 Dim src, pdc, kal, con1, frz, con2, snk As MediaControl
 
 pl = New MediaPipeline
 
 src = New MediaControl(pl, "filesrc")
 src["location"] = im
 pdc = New MediaControl(pl, "pngdec")
 kal = New MediaControl(pl, "kaleidoscope")
 kal["angle"] = Rad(45)
 kal["angle2"] = Rad(140)
 kal["sides"] = 10
 con1 = New MediaControl(pl, "videoconvert")
 frz = New MediaControl(pl, "imagefreeze")
 con2 = New MediaControl(pl, "videoconvert")
 snk = New MediaControl(pl, "xvimagesink")
 
 src.LinkTo(pdc)
 pdc.LinkTo(kal)
 kal.LinkTo(con1)
 con1.LinkTo(frz)
 frz.LinkTo(con2)
 con2.LinkTo(snk)

' L'immagine modificata viene mostrata nella "DrawingArea":
 snk.SetWindow(dr)

End


Public Sub Tasto_Click()          ' _
  
 If tb.Value Then
   pl.Play()
   tb.Background = Color.Red
   tb.Text = "Stop"
 Else
   pl.Stop()
   pl.Close()
   Me.Close
 Endif
  
End