Differenze tra le versioni di "Mostrare sulla MapView disegni, immagini e Controlli senza l'uso del Metodo Map.AddShape()"
Riga 1: | Riga 1: | ||
− | + | ==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'': | Il ''Controllo'' grafico "''MapView'' " è costituito da un Oggetto "Figlio" ''Panel'', il quale è a sua volta ha un Oggetto "Figlio" che è una ''DrawingArea'': | ||
<FONT Size=4>MapView</font> | <FONT Size=4>MapView</font> | ||
Riga 7: | Riga 7: | ||
<FONT Size=2>DrawingArea</font> | <FONT Size=2>DrawingArea</font> | ||
− | + | =Mostrare elementi 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''. | Di norma, per mostrare alcuni elementi grafici (punti, figure piane e immagini), si deve fare riferimento al Metodo ".AddShape()" della Classe ''Map''. | ||
<BR>Questo Metodo, però, <SPAN Style="text-decoration:underline">non</span> consente di inserire <SPAN Style="text-decoration:underline">direttamente</span> anche altri elementi, come ad esempio: testo, effetti grafici in movimento, ''Controlli'' grafici ed altro. | <BR>Questo Metodo, però, <SPAN Style="text-decoration:underline">non</span> consente di inserire <SPAN Style="text-decoration:underline">direttamente</span> anche altri elementi, come ad esempio: testo, effetti grafici in movimento, ''Controlli'' grafici ed altro. | ||
Riga 14: | Riga 14: | ||
<BR>Ovviamente con tale modalità potranno essere mostrati sulla mappa anche altri elementi grafici comunque normalmente riproducibili dal predetto Metodo "Map.AddShape()". Tale circostanza rende molto versatile, duttile ed efficiente questo particolare utilizzo dell'Oggetto ''DrawingArea'', "nipote" della ''MapView''. | <BR>Ovviamente con tale modalità potranno essere mostrati sulla mappa anche altri elementi grafici comunque normalmente riproducibili dal predetto Metodo "Map.AddShape()". Tale circostanza rende molto versatile, duttile ed efficiente questo particolare utilizzo dell'Oggetto ''DrawingArea'', "nipote" della ''MapView''. | ||
− | + | ==Disegnare effetti grafici sulla ''MapView''== | |
Va precisato che l'Evento, ove deve avvenire la realizzazione del disegno mediante le risorse della Classe ''Paint'' resta comunque quello dell'Oggetto ''MapView'': | Va precisato che l'Evento, ove deve avvenire la realizzazione del disegno mediante le risorse della Classe ''Paint'' resta comunque quello dell'Oggetto ''MapView'': | ||
MapView_Draw() | MapView_Draw() | ||
avendo cura in tale routine di assegnare al Metodo "Paint.Begin()" l'Oggetto ''DrawingArea'', "Figlio" del ''Panel''. | avendo cura in tale routine di assegnare al Metodo "Paint.Begin()" l'Oggetto ''DrawingArea'', "Figlio" del ''Panel''. | ||
− | = | + | ===Esempio astratto per disegnare qualsiasi qualcosa=== |
− | |||
− | |||
− | |||
− | ==Esempio astratto per disegnare qualsiasi qualcosa== | ||
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 pn As Panel | Private pn As Panel | ||
Riga 58: | Riga 54: | ||
End | End | ||
+ | |||
+ | ==Mostrare ''Controlli'' sulla ''MapView''== | ||
+ | La suddetta routine "MapView_Draw()" è valida anche nel caso di impostazione sulla ''MapView'' di uno o più [[Inserire_un_Oggetto_grafico_su_una_MapView|''Controlli'' grafici]] (''Button'', ''Label'', etc), <SPAN Style="text-decoration:underline">sebbene solo</span> per far sì che, qualora si sposti la Mappa con il mouse, il ''Controllo'' si mostri solo e sempre alle sue coordinate geografiche prestabilite. | ||
+ | <BR>In particolare si porrà il Metodo ".Move()" del ''Controllo'', assegnando ai due argomenti previsti le coordinate x,y ricavate - quali Proprietà ".X" e ".Y" dal Metodo ".MapPointToPixelRel()" della Classe ''Map'', al quale viene passata la variabile di tipo della Classe ''MapPoint'', contenente le coordinate geografiche del ''Controllo'', precedentemente assegnatele. | ||
+ | |||
==Esempi pratici== | ==Esempi pratici== |
Versione delle 21:06, 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 elementi 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 "Map.AddShape()", si utilizzerà l'Oggetto DrawingArea, "Figlio" dell'Oggetto Panel a sua volta "Figlio" del Controllo MapView.
Ovviamente con tale modalità potranno essere mostrati sulla mappa anche altri elementi grafici comunque normalmente riproducibili dal predetto Metodo "Map.AddShape()". Tale circostanza rende molto versatile, duttile ed efficiente questo particolare utilizzo dell'Oggetto DrawingArea, "nipote" della MapView.
Disegnare effetti grafici sulla MapView
Va precisato che l'Evento, ove deve avvenire la realizzazione del disegno mediante le risorse della Classe Paint resta comunque quello dell'Oggetto MapView:
MapView_Draw()
avendo cura in tale routine di assegnare al Metodo "Paint.Begin()" l'Oggetto DrawingArea, "Figlio" del Panel.
Esempio astratto per disegnare qualsiasi qualcosa
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
Mostrare Controlli sulla MapView
La suddetta routine "MapView_Draw()" è 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.
In particolare si porrà il Metodo ".Move()" del Controllo, assegnando ai due argomenti previsti le coordinate x,y ricavate - quali Proprietà ".X" e ".Y" dal Metodo ".MapPointToPixelRel()" della Classe Map, al quale viene passata la variabile di tipo della Classe MapPoint, contenente le coordinate geografiche del Controllo, precedentemente assegnatele.
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