Differenze tra le versioni di "Ottenere un file png dalla mappa mostrata da una MapView"
Da Gambas-it.org - Wikipedia.
(2 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, 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 27: | Riga 26: | ||
Public Sub MapView1_MouseUp() | Public Sub MapView1_MouseUp() | ||
− | <FONT Color=gray>' ''Se si clicca sulla "MapView" con il tasto destro del mouse, si | + | <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 | ||
+ | Dim pl As MediaPipeline | ||
Dim src, con, png, snk As MediaControl | Dim src, con, png, snk As MediaControl | ||
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 | + | 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/ | + | 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>' '' | + | <FONT Color=gray>' ''Crea il file PNG e poi chiude il flusso di dati:''</font> |
pl.Play() | pl.Play() | ||
pl.Stop() | pl.Stop() | ||
+ | pl.Close | ||
End | End | ||
Riga 54: | Riga 55: | ||
Public Sub Form_Close() | Public Sub Form_Close() | ||
− | If Exist("/tmp/ | + | 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/ | + | Copy "/tmp/immagine_mappa.png" To "/tmp/immagine_mappa_1.png" |
End | End |
Versione attuale delle 13:52, 18 gen 2024
Possiamo ottenere un file di formato PNG dalla mappa mostrata da una MapView, 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.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 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 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