Effetto caleidoscopico di un'immagine PNG con il Componente gb.media
Da Gambas-it.org - Wikipedia.
Versione del 30 giu 2024 alle 16:15 di Vuott (Discussione | contributi)
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