Differenze tra le versioni di "Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()"
Riga 62: | 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 (un ''Controllo'') su una MapView''']] |
Versione delle 20:34, 12 gen 2022
Indice
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:
- Disegnare il testo su una MapView usando l'Oggetto "Figlio" DrawingArea
- Disegnare sulla MapView dei cerchi concentrici al punto ove si è cliccato con il puntatore del mouse
- Disegnare un cerchio o una ellisse o un punto su una MapView usando l'Oggetto "Figlio" DrawingArea
- Disegnare un mirino come cursore del mouse su una MapView
- Disegnare un'immagine su una MapView usando l'Oggetto "Figlio" DrawingArea
- Inserire un Oggetto grafico (un Controllo) su una MapView