Ottenere un file png dalla mappa mostrata da una MapView
Da Gambas-it.org - Wikipedia.
Versione del 24 set 2023 alle 11:16 di Vuott (Discussione | contributi) (Creata pagina con "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 A...")
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 effettua lo "screenshot": 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 farà lo "screenshot" con = New MediaControl(pl, "videoconvert") png = New MediaControl(pl, "pngenc") snk = New MediaControl(pl, "filesink") snk["location"] = "/tmp/screenshot.png" src.LinkTo(con) con.LinkTo(png) png.LinkTo(snk) ' Effettua lo "screenshot": pl.Play() ' Chiude il flusso di dati: pl.Stop() End Public Sub Form_Close() If Exist("/tmp/screenshot_1.png") Then Kill "/tmp/screenshot_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/screenshot.png" To "/tmp/screenshot_1.png" End