Differenze tra le versioni di "Ottenere un file png dalla mappa mostrata da una MapView"

Da Gambas-it.org - Wikipedia.
Riga 27: Riga 27:
 
  Public Sub MapView1_MouseUp()
 
  Public Sub MapView1_MouseUp()
 
   
 
   
  <FONT Color=gray>' ''Se si clicca sulla "MapView" con il tasto destro del mouse, si effettua lo "screenshot":''</font>
+
  <FONT Color=gray>' ''Se si clicca sulla "MapView" con il tasto destro del mouse, si avvierà la procedura per ottenere il file PNG:''</font>
 
   If Not Mouse.Right Then Return  
 
   If Not Mouse.Right Then Return  
 
   
 
   
Riga 35: Riga 35:
 
   
 
   
 
   src = New MediaControl(pl, "ximagesrc")
 
   src = New MediaControl(pl, "ximagesrc")
   src["xid"] = MapView1.Id  <FONT Color=gray>' ''Assegna il numero identificativo della "MapView", della quale si farà lo "screenshot"''</font>
+
   src["xid"] = MapView1.Id  <FONT Color=gray>' ''Assegna il numero identificativo della "MapView", della quale si otterrà il file PNG''</font>
 
   con = New MediaControl(pl, "videoconvert")
 
   con = New MediaControl(pl, "videoconvert")
 
   png = New MediaControl(pl, "pngenc")
 
   png = New MediaControl(pl, "pngenc")
 
   snk = New MediaControl(pl, "filesink")
 
   snk = New MediaControl(pl, "filesink")
   snk["location"] = "/tmp/screenshot.png"
+
   snk["location"] = "/tmp/immagine_mappa.png"
 
   
 
   
 
   src.LinkTo(con)
 
   src.LinkTo(con)
Riga 45: Riga 45:
 
   png.LinkTo(snk)
 
   png.LinkTo(snk)
 
   
 
   
  <FONT Color=gray>' ''Effettua lo "screenshot" e poi chiude il flusso di dati:''</font>
+
  <FONT Color=gray>' ''Crea il file PNG e poi chiude il flusso di dati:''</font>
 
   pl.Play()
 
   pl.Play()
 
   pl.Stop()
 
   pl.Stop()
Riga 54: Riga 54:
 
  Public Sub Form_Close()
 
  Public Sub Form_Close()
 
    
 
    
   If Exist("/tmp/screenshot_1.png") Then Kill "/tmp/screenshot_1.png"
+
   If Exist("/tmp/immagine_mappa_1.png") Then Kill "/tmp/immagine_mappa_1.png"
 
   
 
   
 
  <FONT Color=gray>' ''Se viene chiuso il "Form" direttamente cliccando sul suo tastino [X] in alto a destra, si perderanno i dati PNG nel file immagine appena creato. La seguente soluzione impedirà la perdita del file PNG, creandone un altro identico, ma con diverso nome.</font>
 
  <FONT Color=gray>' ''Se viene chiuso il "Form" direttamente cliccando sul suo tastino [X] in alto a destra, si perderanno i dati PNG nel file immagine appena creato. La seguente soluzione impedirà la perdita del file PNG, creandone un altro identico, ma con diverso nome.</font>
   Copy "/tmp/screenshot.png" To "/tmp/screenshot_1.png"
+
   Copy "/tmp/immagine_mappa.png" To "/tmp/immagine_mappa_1.png"
 
   
 
   
 
  End
 
  End

Versione delle 03:17, 25 set 2023

Possiamo ottenere un file di formato PNG dalla mappa mostrata da una MapView, usando le risorse del Componente gb.media.

Mostriamo un esempio pratico:

Private MapView1 As MapView
Private pl As MediaPipeline


Public Sub Form_Open()

 Dim mp As New MapPoint(41.89030, 12.49237)

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.AvailableHeight
   .Arrangement = Arrange.Fill
 End With

 With MapView1 = New MapView(Me) As "MapView1"
   .Map.AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
   .Map.Zoom = 15
   .Map.Center = mp
 End With

End


Public Sub MapView1_MouseUp()

' Se si clicca sulla "MapView" con il tasto destro del mouse, si avvierà la procedura per ottenere il file PNG:
 If Not Mouse.Right Then Return 

 Dim src, con, png, snk As MediaControl

 pl = New MediaPipeline

 src = New MediaControl(pl, "ximagesrc")
 src["xid"] = MapView1.Id  ' Assegna il numero identificativo della "MapView", della quale si otterrà il file PNG
 con = New MediaControl(pl, "videoconvert")
 png = New MediaControl(pl, "pngenc")
 snk = New MediaControl(pl, "filesink")
 snk["location"] = "/tmp/immagine_mappa.png"

 src.LinkTo(con)
 con.LinkTo(png)
 png.LinkTo(snk)

' Crea il file PNG e poi chiude il flusso di dati:
 pl.Play()
 pl.Stop()

End


Public Sub Form_Close()
 
 If Exist("/tmp/immagine_mappa_1.png") Then Kill "/tmp/immagine_mappa_1.png"

' Se viene chiuso il "Form" direttamente cliccando sul suo tastino [X] in alto a destra, si perderanno i dati PNG nel file immagine appena creato. La seguente soluzione impedirà la perdita del file PNG, creandone un altro identico, ma con diverso nome.
 Copy "/tmp/immagine_mappa.png" To "/tmp/immagine_mappa_1.png"

End