Mostrare un'immagine mediante il Componente gb.media

Da Gambas-it.org - Wikipedia.
Versione del 6 ago 2017 alle 07:29 di Vuott (Discussione | contributi) (Creata pagina con "Il Componente ''gb.media'' ci permette, fra l'altro, di mostrare file immagine con le medesime modalità e opportunità previste per i file video. ==Uso della Classe ''Media...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Il Componente gb.media ci permette, fra l'altro, di mostrare file immagine con le medesime modalità e opportunità previste per i file video.


Uso della Classe MediaPlayer

Innanzitutto possiamo utilizzare la Classe "MediaPlayer" per un breve codice e per una veloce soluzione. Potremo mostrare l'immegine all'interno di un oggetto GUI nativo di Gambas, oppure all'interno di una finestra esterna creata automaticamente dalle risorse del Componente gb.media .

Mostrare l'immagine all'interno di un oggetto GUI

Rispetto alla consueta modalità di caricare e di mostrare file immagine mediante la Classe PictureBox, le risorse del Componente gb.media ci consentono di mostrare l'immagine in qualsiasi oggetto che abbia una superficie.

Nell'esempio pratico che segue imposteremo una DrawingArea come oggetto GUI, nel quale mostrare il file immagine:

Private mp As MediaPlayer
 

Public Sub Form_Open()
 
 Dim da As DrawingArea
    
' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine:
  With da = New DrawingArea(Me)
    .X = 10
    .Y = 10
    .W = 300
    .H = 300
  End With
  
  With mp = New MediaPlayer
   .URL = Media.URL("/percorso/del/file/immagine")
' Imposta il controllo dell'uscita immagine da usare:
   .SetWindow(da)
 End With
  
End


Public Sub Button1_Click()

' Mostra il file immagine:
  mp.Play()
   
End


Mostrare l'immagine all'interno di una finestra esterna

Possiamo decidere di far mostrare l'immagine all'interno di una finestra esterna al programma Gambas, creata automaticamente della risorse del sistema GStreamer, sul quale si basa il Componente gb.media .

Di seguito un semplice codice analogo al pecedente:

 Private mp As MediaPlayer
 

Public Sub Form_Open()
     
  mp = New MediaPlayer
  mp.URL = Media.URL("/percorso/del/file/immagine")
     
End


Public Sub Button1_Click()

' Mostra il file immagine:
  mp.Play()
   
End


Uso delle Classi MediaPipeline e MediaControl

Volendo, è possibile utilizzare le Classi "MediaPipeline" e "MediaControl" del Componente gb.media anziché quella sopra vista Medialayer.


Mostrare un file immagine di formato JPEG

Per mostrare un file immagine di formato "jpeg" all'interno della superficie di un Oggetto posto sul Form, possiamo adottare il seguente codice:

Private pl As MediaPipeline


Public Sub Form_Open()
 
 Dim da As DrawingArea
 Dim src, jde, frz, con, sca, xim As MediaControl
 
' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine:
  With da = New DrawingArea(Me)
    .X = 10
    .Y = 10
    .W = 300
    .H = 300
  End With
  
  pl = New MediaPipeline
  
  src = New MediaControl(pl, "filesrc")
  src["location"] = "/percorso/del/file/immagine.jpg"
  jde = New MediaControl(pl, "jpegdec")
  con = New MediaControl(pl, "videoconvert")
  sca = New MediaControl(pl, "videoscale")
  xim = New MediaControl(pl, "ximagesink")
  xim.SetWindow(da)
 
' Vengono collegati i vari plug-in di GStreamer utilizzati:"
  src.LinkTo(jde)
  jde.LinkTo(con)
  con.LinkTo(sca)
  sca.LinkTo(xim)
   
End


Public Sub Button1_Click()

  pl.Play()
  
End


Mostrare un file immagine di formato PNG

Analogamente al codice precedente, per mostrare un file immagine di formato "png" all'interno della superficie di un Oggetto posto sul Form, possiamo adottare il seguente codice:

Private pl As MediaPipeline


Public Sub Form_Open()
 
 Dim da As DrawingArea
 Dim src, png, con, sca, xim As MediaControl
 
' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine:
  With da = New DrawingArea(Me)
    .X = 10
    .Y = 10
    .W = 300
    .H = 300
  End With
  
  pl = New MediaPipeline
  
  src = New MediaControl(pl, "filesrc")
  src["location"] = "/percorso/del/file/immagine.png"
  png = New MediaControl(pl, "pngdec")
  con = New MediaControl(pl, "videoconvert")
  sca = New MediaControl(pl, "videoscale")
  xim = New MediaControl(pl, "ximagesink")
  xim.SetWindow(da)
 
' Vengono collegati i vari plug-in di GStreamer utilizzati:"
  src.LinkTo(png)
  png.LinkTo(con)
  con.LinkTo(sca)
  sca.LinkTo(xim)
   
End


Public Sub Button1_Click()

  pl.Play()
  
End


Plug-in generico per mostrare vari formati di file immagine

Utilizzando il plug-in "gdkpixbufdec" sarà possibile mostrare svariati formati di file immagine. Questo plug-in facilita la creazione del codice adatto, eliminando la necessità di individuare l'esatto plug-in per mostrare un particolare formato immagine.


Mostriamo un semplice esempio pratico:

Private pl As MediaPipeline


Public Sub Form_Open()
 
 Dim da As DrawingArea
 Dim src, gdk, con, sca, xim As MediaControl
 
' Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine:
  With da = New DrawingArea(Me)
    .X = 10
    .Y = 10
    .W = 300
    .H = 300
  End With
  
  pl = New MediaPipeline
  
  src = New MediaControl(pl, "filesrc")
  src["location"] = "/percorso/del/file/immagine.bmp"
  gdk = New MediaControl(pl, "gdkpixbufdec")
  con = New MediaControl(pl, "videoconvert")
  sca = New MediaControl(pl, "videoscale")
  xim = New MediaControl(pl, "ximagesink")
  xim.SetWindow(da)
 
' Vengono collegati i vari plug-in di GStreamer utilizzati:"
  src.LinkTo(gdk)
  gdk.LinkTo(con)
  con.LinkTo(sca)
  sca.LinkTo(xim)
   
End


Public Sub Button1_Click()

  pl.Play()
  
End