Differenze tra le versioni di "Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()"

Da Gambas-it.org - Wikipedia.
Riga 17: Riga 17:
 
avendo cura in tale routine di assegnare al Metodo ".Begin()" della Classe ''Paint'' l'Oggetto ''DrawingArea'', "Figlio" del ''Panel''.
 
avendo cura in tale routine di assegnare al Metodo ".Begin()" della Classe ''Paint'' l'Oggetto ''DrawingArea'', "Figlio" del ''Panel''.
  
Questa routine resta valida anche nel caso di impostazione sulla ''MapView'' di uno o più ''Controlli'' grafici (''Button'', ''Label'', etc), sebbene solo per far sì che, qualora si sposti la Mappa con il mouse, il ''Controllo'' si mostri solo e sempre alle sue coordinate geografiche prestabilite.
+
Questa routine è valida anche nel caso di impostazione sulla ''MapView'' di uno o più ''Controlli'' grafici (''Button'', ''Label'', etc), sebbene solo per far sì che, qualora si sposti la Mappa con il mouse, il ''Controllo'' si mostri solo e sempre alle sue coordinate geografiche prestabilite.
  
 
===Esempio astratto===
 
===Esempio astratto===
 
Mostriamo di seguito un esempio astratto, per disegnare qualsiasi cosa, facendola apparire al di sopra della mappa:
 
Mostriamo di seguito un esempio astratto, per disegnare qualsiasi cosa, facendola apparire al di sopra della mappa:
Private MapView1 As MapView
 
 
  Private pn As Panel
 
  Private pn As Panel
 
   
 
   
Riga 27: Riga 26:
 
  Public Sub Form_Open()
 
  Public Sub Form_Open()
 
   
 
   
  With Me
+
   With MapView1
    .W = Screen.AvailableWidth
 
    .H = Screen.AvailableHeight
 
    .Arrangement = Arrange.Fill
 
  End With
 
   With MapView1 = New MapView(Me) As "MapView1"
 
 
     .Map.AddTile("topo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
 
     .Map.AddTile("topo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
 
     .Map.Zoom = 14
 
     .Map.Zoom = 14
Riga 51: Riga 45:
 
   
 
   
 
   With Paint
 
   With Paint
  <FONT Color=gray>' ''Disegna sull'Oggetto "Figlio" del "Panel", che è una "DrawingArea" (ossia lo stesso Oggetto che la Classe "MapView" usa ordinariamente per mostrare la mappa):''</font>
+
  <FONT Color=gray>' '''''Disegna sull'Oggetto "Figlio" del "Panel", che è una "DrawingArea" (ossia lo stesso Oggetto che la Classe "MapView" usa ordinariamente per mostrare la mappa):'''''</font>
 
     <FONT Color=#B22222><B>.Begin(da)</b></font>
 
     <FONT Color=#B22222><B>.Begin(da)</b></font>
 
   
 
   
     <FONT Color=gray>' ''...qui fa qualcosa...''</font>
+
     <FONT Color=gray>' '''''...qui disegna qualcosa...'''''</font>
 
   
 
   
 
     .End
 
     .End
Riga 68: Riga 62:
 
* [[Disegnare_un_mirino_come_cursore_del_mouse_su_una_MapView|Disegnare un mirino come cursore del mouse su una MapView]]
 
* [[Disegnare_un_mirino_come_cursore_del_mouse_su_una_MapView|Disegnare un mirino come cursore del mouse su una MapView]]
 
* [[Inserire_un'immagine_come_marcatore_di_coordinate_su_una_MapView#Disegnare_un.22immagine_su_una_MapView_usando_l.27Oggetto_.22Figlio.22_DrawingArea|Disegnare un'immagine su una MapView usando l'Oggetto "Figlio" DrawingArea]]
 
* [[Inserire_un'immagine_come_marcatore_di_coordinate_su_una_MapView#Disegnare_un.22immagine_su_una_MapView_usando_l.27Oggetto_.22Figlio.22_DrawingArea|Disegnare un'immagine su una MapView usando l'Oggetto "Figlio" DrawingArea]]
* [[Inserire_un_Oggetto_grafico_su_una_MapView|Inserire un Oggetto grafico su una MapView]]
+
* [[Inserire_un_Oggetto_grafico_su_una_MapView|'''Inserire un Oggetto grafico su una MapView''']]

Versione delle 20:33, 12 gen 2022

Introduzione: la struttura della MapView

Il Controllo grafico "MapView " è costituito da un Oggetto "Figlio" Panel, il quale è a sua volta ha un Oggetto "Figlio" che è una DrawingArea:

MapView
 genitore di un
Panel
 genitore di una
DrawingArea

Mostrare effetti grafici non riproducibili con il Metodo "Map.AddShape()"

Di norma, per mostrare alcuni elementi grafici (punti, figure piane e immagini), si deve fare riferimento al Metodo ".AddShape()" della Classe Map.
Questo Metodo, però, non consente di inserire direttamente anche altri elementi, come ad esempio: testo, effetti grafici in movimento, Controlli grafici ed altro.

In caso di bisogno, dunque, per mostrare sulla MapView elementi ed effetti grafici, testo, disegni, immagini e anche Controlli, non riproducibili normalmente con il Metodo Metodo "Map.AddShape()", si utilizzerà l'Oggetto DrawingArea, "Figlio" dell'Oggetto Panel a sua volta "Figlio" del Controllo MapView.

In particolare va detto che l'Evento, ove avverrà la realizzazione del disegno resta comunque quello dell'Oggetto MapView:

MapView_Draw()

avendo cura in tale routine di assegnare al Metodo ".Begin()" della Classe Paint l'Oggetto DrawingArea, "Figlio" del Panel.

Questa routine è valida anche nel caso di impostazione sulla MapView di uno o più Controlli grafici (Button, Label, etc), sebbene solo per far sì che, qualora si sposti la Mappa con il mouse, il Controllo si mostri solo e sempre alle sue coordinate geografiche prestabilite.

Esempio astratto

Mostriamo di seguito un esempio astratto, per disegnare qualsiasi cosa, facendola apparire al di sopra della mappa:

Private pn As Panel


Public Sub Form_Open()

 With MapView1
   .Map.AddTile("topo", "https://a.tile.opentopomap.org/{z}/{x}/{y}.png")
   .Map.Zoom = 14
   .Map.Center = MapPoint(41.89018, 12.49230)
 End With

' Individua dapprima l'Oggetto "Figlio" della "MapView", che è un "Panel":
 pn = MapView1.Children[0]

End

Public Sub MapView1_Draw()

' Individua l'Oggetto "Figlio" del "Panel", che è una "DrawingArea":
 Dim da As DrawingArea

 da = pn.Children[0]

 With Paint
' Disegna sull'Oggetto "Figlio" del "Panel", che è una "DrawingArea" (ossia lo stesso Oggetto che la Classe "MapView" usa ordinariamente per mostrare la mappa):
   .Begin(da)

   ' ...qui disegna qualcosa...

   .End
 End With

End

Esempi pratici

Esempi pratici posso essere rinvenuti nelle seguenti pagine: