Differenze tra le versioni di "Ottenere un file pdf dalla mappa mostrata da una MapView"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | Per ottenere la stampa su un file PDF della mappa mostrata dalla ''MapView'', è possibile | + | Per ottenere la stampa su un file PDF della mappa mostrata dalla ''MapView'', è possibile adottare almeno un paio di modalità. |
− | Mostriamo un esempio | + | ===Uso delle risorse della Classe "Printer"=== |
+ | Mostriamo un esempio: <SUP>[[[#Note|Nota 1]]]</sup> | ||
Private MapView1 As MapView | Private MapView1 As MapView | ||
Private Printer1 As Printer | Private Printer1 As Printer | ||
Riga 46: | Riga 47: | ||
.Draw() | .Draw() | ||
End With | End With | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | ===Uso delle risorse della Classe "Cairo"=== | ||
+ | In tal caso è necessario attivare anche il Componente "gb.cairo". | ||
+ | Private MapView1 As MapView | ||
+ | |||
+ | |||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | With Me | ||
+ | .W = (297.0 * Desktop.Resolution) / 25.4 | ||
+ | .H = (210.0 * Desktop.Resolution) / 25.4 | ||
+ | .Arrangement = Arrange.Fill | ||
+ | End With | ||
+ | |||
+ | With MapView1 = New MapView(Me) As "MapView1" | ||
+ | <FONT Color=gray>' ''Imposta un "Raster Tiles Server" remoto:''</font> | ||
+ | .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png") | ||
+ | .Map.Zoom = 15 | ||
+ | <FONT Color=gray>' ''Imposta il centro della mappa visualizzata specificandone preliminarmente le coordinate geografiche:''</font> | ||
+ | .Map.Center = New MapPoint(41.8902142, 12.4900422) | ||
+ | End With | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Public''' Sub MapView1_MouseUp() | ||
+ | |||
+ | If Mouse.Left Then Return | ||
+ | |||
+ | Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard) | ||
+ | |||
+ | With Paint | ||
+ | .Begin(im) | ||
+ | MapView1.Map.Draw() | ||
+ | .End | ||
+ | End With | ||
+ | |||
+ | CreaPDF(im) | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | '''Private''' Procedure CreaPDF(imago As Image) | ||
+ | |||
+ | Dim pdf As CairoPdfSurface | ||
+ | |||
+ | <FONT Color=gray>' ''Specifica la superficie grafica da creare per disegnarvi sopra, dimensionandola in "millimetri":''</font> | ||
+ | pdf = New CairoPdfSurface("/tmp/file.pdf", (297.0 * Desktop.Resolution) / 25.4, (210.0 * Desktop.Resolution) / 25.4) | ||
+ | |||
+ | <FONT Color=gray>' ''Inizia il disegno sulla superficie impostata:''</font> | ||
+ | With Cairo | ||
+ | .Begin(pdf) | ||
+ | .Source = Cairo.ImagePattern(imago, 0, 0) | ||
+ | .Paint | ||
+ | <FONT Color=gray>' ''Termina il disegno dell'immagine:''</font> | ||
+ | .End | ||
+ | End With | ||
'''End''' | '''End''' |
Versione delle 19:20, 18 dic 2021
Per ottenere la stampa su un file PDF della mappa mostrata dalla MapView, è possibile adottare almeno un paio di modalità.
Uso delle risorse della Classe "Printer"
Mostriamo un esempio: [Nota 1]
Private MapView1 As MapView Private Printer1 As Printer Private mp As New MapPoint(41.8902142, 12.4900422) Public Sub Form_Open() With Me .W = Screen.AvailableWidth .H = Screen.AvailableHeight .Arrangement = Arrange.Fill End With With MapView1 = New MapView(Me) As "MapView1" ' Imposta un "Raster Tiles Server" remoto: .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png") .Map.Zoom = 15 ' Imposta il centro della mappa visualizzata specificandone preliminarmente le coordinate geografiche: .Map.Center = mp End With With Printer1 = New Printer As "Printer1" .Resolution = Desktop.Resolution .Paper = .A4 .Orientation = .Landscape ' Stampa su un file .pdf (crea un file .pdf): .OutputFile = "/tmp/file.pdf" End With End Public Sub MapView1_MouseUp() ' Se si clicca con il tasto destro del mouse sulla mappa, si avvia la stampa su un file .pdf: If Mouse.Right Then Printer1.Print End Public Sub Printer1_Draw() ' Esegue la stampa su un file .pdf della mappa mostrata: With MapView1.Map .Width = MapView1.W .Height = MapView1.H .Draw() End With End
Uso delle risorse della Classe "Cairo"
In tal caso è necessario attivare anche il Componente "gb.cairo".
Private MapView1 As MapView Public Sub Form_Open() With Me .W = (297.0 * Desktop.Resolution) / 25.4 .H = (210.0 * Desktop.Resolution) / 25.4 .Arrangement = Arrange.Fill End With With MapView1 = New MapView(Me) As "MapView1" ' Imposta un "Raster Tiles Server" remoto: .Map.AddTile("opentopo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png") .Map.Zoom = 15 ' Imposta il centro della mappa visualizzata specificandone preliminarmente le coordinate geografiche: .Map.Center = New MapPoint(41.8902142, 12.4900422) End With End Public Sub MapView1_MouseUp() If Mouse.Left Then Return Dim im As New Image(MapView1.W, MapView1.H, Color.White, Image.Standard) With Paint .Begin(im) MapView1.Map.Draw() .End End With CreaPDF(im) End Private Procedure CreaPDF(imago As Image) Dim pdf As CairoPdfSurface ' Specifica la superficie grafica da creare per disegnarvi sopra, dimensionandola in "millimetri": pdf = New CairoPdfSurface("/tmp/file.pdf", (297.0 * Desktop.Resolution) / 25.4, (210.0 * Desktop.Resolution) / 25.4) ' Inizia il disegno sulla superficie impostata: With Cairo .Begin(pdf) .Source = Cairo.ImagePattern(imago, 0, 0) .Paint ' Termina il disegno dell'immagine: .End End With End
Note
[1] Riguardo alla creazione di un file pdf con la Classe "Printer", vedere anche: Stampare in un file .pdf