Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()
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 o l'impostazione di uno o più Controlli grafici, 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.
Esempio astratto
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 Public Sub Form_Open() With Me .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.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 fa qualcosa... .End End With End
Esempi pratici
Esempi pratici posso essere rinvenuti nelle seguenti pagine:
- [[]]