Catturare l'immagine di una GridView con il Componente gb.media

Da Gambas-it.org - Wikipedia.

Per catturare l'immagine di una GridView con il Componente gb.media, è possibile usare il seguente codice: [nota 1]

Public Sub Form_Open()

 Dim r, c As Byte

 With GridView1
   .Rows.Count = 5
   .Columns.Count = 5
 End With
 
 For r = 0 To 4
   For c = 0 To 4
      GridView1[r, c].Text = "abcde"
   Next 
 Next

End 

Public Sub Button1_Click()

 Dim pl As MediaPipeline
 Dim src, enc, snk As MediaControl
 Dim appoggio As String

 appoggio = Temp

 pl = New MediaPipeline 
 
 src = New MediaControl(pl, "ximagesrc")
' Assegna alla proprietà "xid" del plugin "ximagesrc" il numero idetificativo della "GridView", affinché ne catturi quanto da essa visualizzato:
 src["xid"] = GridView1.Id
 enc = New MediaControl(pl, "jpegenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = appoggio

' Collega fra loro i plugin di "GStreamer":
 src.LinkTo(enc)
 enc.LinkTo(snk)
 
' Effettua la ripresa dell'immagine della GridView:
 pl.Play()
 
' Può essere necessario porre una breve pausa per consentire la cattura dell'immagine:
 Wait 1

' L'immagine della GridView è salvata in un file di formato JPG:
 Copy appoggio To "/tmp/immagine.jpg"

 pl.Stop()
 pl.Close()
 Print "Cattura immagine effettuata"

End

In quest'altro esempio l'immagine della GridView sarà salvata in un file di formato PNG:

Public Sub Form_Open()

 Dim r, c As Byte

 With GridView1
   .Rows.Count = 5
   .Columns.Count = 5
 End With
 
 For r = 0 To 4
   For c = 0 To 4
      GridView1[r, c].Text = "abcde"
   Next 
 Next

End 

Public Sub Button1_Click()

 Dim pl As MediaPipeline
 Dim src, vdc, enc, snk As MediaControl
 Dim appoggio As String

 appoggio = Temp

 pl = New MediaPipeline 
 
 src = New MediaControl(pl, "ximagesrc")
 src["xid"] = GridView1.Id
 vdc = New MediaControl(pl, "videoconvert")
 enc = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = appoggio

 src.LinkTo(vdc)
 vdc.LinkTo(enc)
 enc.LinkTo(snk)

 pl.Play()

 Repeat 
   Wait 0.01
 Until Right(File.Load(appoggio), SizeOf(gb.Integer)) = MkInt(&826042AE)

' L'immagine della GridView è salvata in un file di formato PNG:
 Copy appoggio To "/tmp/immagine.png"

 pl.Stop()
 pl.Close()
 Print "Cattura immagine effettuata"

End


Note

[1] Vedere anche le seguenti pagine: