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

Da Gambas-it.org - Wikipedia.
 
(3 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Possiamo ottenere un file di formato PNG dalla mappa mostrata da una MapView, usando le risorse del Componente ''gb.media''.
+
Possiamo ottenere un file di formato PNG dalla mappa mostrata da una MapView <SUP>&#091;[[#Note|nota 1]]&#093;</sup>, usando anche le risorse del Componente ''gb.media''.
  
Mostriamo un esempio pratico:
+
Mostriamo un esempio pratico (è necessario attivare anche i Componenti ''gb.map'' e ''gb.media'' ):
 
  Private MapView1 As MapView
 
  Private MapView1 As MapView
 
   
 
   
Riga 11: Riga 11:
 
   With Me
 
   With Me
 
     .W = Screen.AvailableWidth
 
     .W = Screen.AvailableWidth
     .H = Screen.AvailableHeight
+
     .H = Screen.Height * 0.9
 
     .Arrangement = Arrange.Fill
 
     .Arrangement = Arrange.Fill
 
   End With
 
   End With
Riga 48: Riga 48:
 
   pl.Play()
 
   pl.Play()
 
   pl.Stop()
 
   pl.Stop()
 +
  pl.Close
 
   
 
   
 
  End
 
  End
+
 
+
 
Public Sub Form_Close()
+
 
 
+
=Note=
  If Exist("/tmp/immagine_mappa_1.png") Then Kill "/tmp/immagine_mappa_1.png"
+
[1] Vedere anche: [[Ottenere un'Image dalla mappa mostrata da una MapView]]
 
<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/immagine_mappa.png" To "/tmp/immagine_mappa_1.png"
 
 
End
 

Versione attuale delle 04:16, 5 giu 2024

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

Mostriamo un esempio pratico (è necessario attivare anche i Componenti gb.map e gb.media ):

Private MapView1 As MapView


Public Sub Form_Open()

 Dim mp As New MapPoint(41.89030, 12.49237)

 With Me
   .W = Screen.AvailableWidth
   .H = Screen.Height * 0.9
   .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 pl As MediaPipeline
 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()
 pl.Close

End


Note

[1] Vedere anche: Ottenere un'Image dalla mappa mostrata da una MapView