Effetto caleidoscopico di un'immagine PNG con il Componente gb.media

Da Gambas-it.org - Wikipedia.
Versione del 31 lug 2020 alle 16:16 di Vuott (discussione | contributi) (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...")
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

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 imm As String
Private pl As MediaPipeline


Public Sub _new()
 
 Dim w As Integer
 Dim h As Integer
 
 imm = "/percorso/del/file.png"
 
 w = ImageStat(imm).Width
 h = ImageStat(imm).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"] = imm
 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