Differenze tra le versioni di "Mostrare un'immagine mediante il Componente gb.media"

Da Gambas-it.org - Wikipedia.
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 12: Riga 12:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
   Dim da As DrawingArea
+
   Dim DrawingArea1 As DrawingArea
   
+
 
  <FONT Color=gray>' ''Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine'':</font>
 
  <FONT Color=gray>' ''Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine'':</font>
  With da = New DrawingArea(Me)
+
  With DrawingArea1 = New DrawingArea(Me) As "DrawingArea1"
     .X = 10
+
     .X = 0
     .Y = 10
+
     .Y = 0
     .W = 300
+
     .W = Me.W
     .H = 300
+
     .H = Me.H
 
   End With
 
   End With
 
    
 
    
 
   With mp = New MediaPlayer
 
   With mp = New MediaPlayer
     .URL = Media.URL("<FONT Color=gray>''/percorso/del/file/immagine''</font>")
+
     .URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
 
  <FONT Color=gray>' ''Imposta il controllo dell'uscita immagine da usare:''</font>
 
  <FONT Color=gray>' ''Imposta il controllo dell'uscita immagine da usare:''</font>
     .SetWindow(da)
+
     .SetWindow(DrawingArea1)
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub DrawingArea1_MouseUp()
 
   
 
   
 
  <FONT Color=gray>' ''Mostra il file immagine:''</font>
 
  <FONT Color=gray>' ''Mostra il file immagine:''</font>
 
   mp.Play()
 
   mp.Play()
 
      
 
      
  '''End'''
+
  End
 +
===Mostrare un'immagine all'interno di una ''ImageView''===
 +
Nel seguente esempio sarà mostrata un'immagine in una "ImageView":
 +
Private mp As MediaPlayer
 +
 +
 +
Public Sub Form_Open()
 +
 +
  Dim ImageView1 As ImageView
 +
  Dim src, gdk, con, sca, xim As MediaControl
 +
 +
<FONT Color=gray>' ''Crea una "ImageView" come oggetto GUI da usare per l'uscita immagine:''</font>
 +
  With ImageView1 = New ImageView(Me) As "ImageView1"
 +
    .X = 10
 +
    .Y = 10
 +
    .W = Me.W
 +
    .H = Me.H
 +
  End With
 +
 +
  With mp = New MediaPlayer
 +
    .URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
 +
<FONT Color=gray>' ''Imposta il controllo dell'uscita immagine da usare:''</font>
 +
    .SetWindow(ImageView1)
 +
  End With
 +
 
 +
End
 +
 +
 +
Public Sub ImageView1_MouseUp()
 +
 +
<FONT Color=gray>' ''Consente di mostrare l'immagine ogni qual volta si clicca sulla "ImageView":''</font>
 +
  mp.Stop()
 +
 +
<FONT Color=gray>' ''Mostra il file immagine:''</font>
 +
  mp.Play()
 +
 +
End
 +
 
 
===Mostrare un'immagine all'interno di una ''MapView''===
 
===Mostrare un'immagine all'interno di una ''MapView''===
 
Come è noto, una ''MapView'' è formata anche da un Oggetto "Figlio" che un ''Panel'', il quale a sua volta contiene una ''DrawingArea'' <SUP>&#091;[[#Note|Nota 1]]&#093;</sup> come suo Oggetto "Figlio", pertanto usando le risorse dei Componenti "gb.media" e "gb.map" è possibile mostrare un'immagine anche in una ''MapView''.
 
Come è noto, una ''MapView'' è formata anche da un Oggetto "Figlio" che un ''Panel'', il quale a sua volta contiene una ''DrawingArea'' <SUP>&#091;[[#Note|Nota 1]]&#093;</sup> come suo Oggetto "Figlio", pertanto usando le risorse dei Componenti "gb.media" e "gb.map" è possibile mostrare un'immagine anche in una ''MapView''.
Riga 45: Riga 82:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
   Dim MapView1 As MapView
 
   Dim MapView1 As MapView
Riga 58: Riga 95:
 
   
 
   
 
   With mp = New MediaPlayer
 
   With mp = New MediaPlayer
  .URL = Media.URL("<FONT Color=gray>''/percorso/del/file/immagine''</font>")
+
    .URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
 
  <FONT Color=gray>' ''Imposta il controllo dell'uscita immagine da usare:''</font>
 
  <FONT Color=gray>' ''Imposta il controllo dell'uscita immagine da usare:''</font>
  .SetWindow(MapView1)
+
    .SetWindow(MapView1)
End With
+
  End With
 
    
 
    
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub MapView1_MouseUp()
+
  Public Sub MapView1_MouseUp()
 
   
 
   
 
  <FONT Color=gray>' ''Consente di mostrare l'immagine ogni qual volta si clicca sulla "MapView":''</font>
 
  <FONT Color=gray>' ''Consente di mostrare l'immagine ogni qual volta si clicca sulla "MapView":''</font>
Riga 73: Riga 111:
 
   mp.Play()
 
   mp.Play()
 
   
 
   
  '''End'''
+
  End
  
 
===Mostrare l'immagine all'interno di una finestra esterna===
 
===Mostrare l'immagine all'interno di una finestra esterna===
Riga 82: Riga 120:
 
    
 
    
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
        
 
        
 
   mp = New MediaPlayer
 
   mp = New MediaPlayer
   mp.URL = Media.URL("<FONT Color=gray>''/percorso/del/file/immagine''</font>")
+
   mp.URL = Media.URL("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
 
        
 
        
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
 
  <FONT Color=gray>' ''Mostra il file immagine:''</font>
 
  <FONT Color=gray>' ''Mostra il file immagine:''</font>
 
   mp.Play()
 
   mp.Play()
 
      
 
      
  '''End'''
+
  End
  
  
Riga 107: Riga 145:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
  Dim da As DrawingArea
+
  Dim da As DrawingArea
  Dim src, jde, frz, con, sca, xim As MediaControl
+
  Dim src, jde, frz, con, sca, xim As MediaControl
 
    
 
    
 
  <FONT Color=gray>' ''Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine'':</font>
 
  <FONT Color=gray>' ''Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine'':</font>
Riga 123: Riga 161:
 
    
 
    
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file/immagine.jpg''</font>"
+
   src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/immagine.jpg''</font>"
   jde = New MediaControl(pl, "<FONT Color=#B22222>jpegdec</font>")
+
   jde = New MediaControl(pl, "<FONT Color=red>jpegdec</font>")
 
   con = New MediaControl(pl, "videoconvert")
 
   con = New MediaControl(pl, "videoconvert")
 
   sca = New MediaControl(pl, "videoscale")
 
   sca = New MediaControl(pl, "videoscale")
Riga 136: Riga 174:
 
   sca.LinkTo(xim)
 
   sca.LinkTo(xim)
 
      
 
      
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
 
   pl.Play()
 
   pl.Play()
 
    
 
    
  '''End'''
+
  End
  
  
Riga 151: Riga 189:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
  Dim da As DrawingArea
+
  Dim da As DrawingArea
  Dim src, png, con, sca, xim As MediaControl
+
  Dim src, png, con, sca, xim As MediaControl
 
    
 
    
 
  <FONT Color=gray>' ''Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine'':</font>
 
  <FONT Color=gray>' ''Crea una "DrawingArea" come oggetto GUI da usare per l'uscita immagine'':</font>
Riga 167: Riga 205:
 
    
 
    
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file/immagine.png''</font>"
+
   src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/immagine.png''</font>"
   png = New MediaControl(pl, "<FONT Color=#B22222>pngdec</font>")
+
   png = New MediaControl(pl, "<FONT Color=red>pngdec</font>")
 
   con = New MediaControl(pl, "videoconvert")
 
   con = New MediaControl(pl, "videoconvert")
 
   sca = New MediaControl(pl, "videoscale")
 
   sca = New MediaControl(pl, "videoscale")
Riga 180: Riga 218:
 
   sca.LinkTo(xim)
 
   sca.LinkTo(xim)
 
      
 
      
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
 
   pl.Play()
 
   pl.Play()
 
    
 
    
  '''End'''
+
  End
  
  
Riga 198: Riga 236:
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
    
 
    
 
   Dim da As DrawingArea
 
   Dim da As DrawingArea
Riga 214: Riga 252:
 
    
 
    
 
   src = New MediaControl(pl, "filesrc")
 
   src = New MediaControl(pl, "filesrc")
   src["location"] = "<FONT Color=gray>''/percorso/del/file/immagine.bmp''</font>"
+
   src["location"] = "<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>"
   gdk = New MediaControl(pl, "<FONT Color=#B22222>gdkpixbufdec</font>")
+
   gdk = New MediaControl(pl, "<FONT Color=red>gdkpixbufdec</font>")
 
   con = New MediaControl(pl, "videoconvert")
 
   con = New MediaControl(pl, "videoconvert")
 
   sca = New MediaControl(pl, "videoscale")
 
   sca = New MediaControl(pl, "videoscale")
Riga 227: Riga 265:
 
   sca.LinkTo(xim)
 
   sca.LinkTo(xim)
 
      
 
      
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
 
   pl.Play()
 
   pl.Play()
 
    
 
    
  '''End'''
+
  End
  
  

Versione attuale delle 15:58, 30 giu 2024

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 DrawingArea1 As DrawingArea

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


Public Sub DrawingArea1_MouseUp()

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

Mostrare un'immagine all'interno di una ImageView

Nel seguente esempio sarà mostrata un'immagine in una "ImageView":

Private mp As MediaPlayer


Public Sub Form_Open()

 Dim ImageView1 As ImageView
 Dim src, gdk, con, sca, xim As MediaControl

' Crea una "ImageView" come oggetto GUI da usare per l'uscita immagine:
 With ImageView1 = New ImageView(Me) As "ImageView1"
   .X = 10
   .Y = 10
   .W = Me.W
   .H = Me.H
 End With

 With mp = New MediaPlayer
   .URL = Media.URL("/percorso/del/file/immagine")
' Imposta il controllo dell'uscita immagine da usare:
   .SetWindow(ImageView1)
 End With
 
End


Public Sub ImageView1_MouseUp()

' Consente di mostrare l'immagine ogni qual volta si clicca sulla "ImageView":
 mp.Stop()

' Mostra il file immagine:
 mp.Play()

End

Mostrare un'immagine all'interno di una MapView

Come è noto, una MapView è formata anche da un Oggetto "Figlio" che un Panel, il quale a sua volta contiene una DrawingArea [Nota 1] come suo Oggetto "Figlio", pertanto usando le risorse dei Componenti "gb.media" e "gb.map" è possibile mostrare un'immagine anche in una MapView.
E' necessario attivare anche il Componente "gb.map".

Private mp As MediaPlayer


Public Sub Form_Open()

 Dim MapView1 As MapView
  
' Crea una "MapView" come oggetto GUI da usare per l'uscita immagine:
 With MapView1 = New MapView(Me) As "MapView1"
   .X = 10
   .Y = 10
   .W = Me.W
   .H = Me.H
 End With

 With mp = New MediaPlayer
   .URL = Media.URL("/percorso/del/file/immagine")
' Imposta il controllo dell'uscita immagine da usare:
   .SetWindow(MapView1)
 End With
 
End


Public Sub MapView1_MouseUp()

' Consente di mostrare l'immagine ogni qual volta si clicca sulla "MapView":
 mp.Stop()

' 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"
  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


Note

[1] Vedere questa pagina: Disegnare un cerchio o una ellisse o un punto su una MapView usando l'Oggetto "Figlio" DrawingArea