Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Dibujar en la "MapView" círculos concéntricos donde se ha hecho clic con el ratón
#1

Hola,
en este mi siguiente programa, haciendo clic con el botón derecho del ratón, se dibujan secuencias temporales de círculos concéntricos en el punto donde se ha hecho clic.
Al final, quedará un punto rojo.
En cambio, al hacer clic con el botón central del ratón, los puntos previamente dibujados se borrarán.
Hay que activar el componente gb.map .

GAMBAS
  1. Private MapView1 As MapView
  2. Private mmpp As MapPoint[]
  3.  
  4. Public Sub Form_Open()
  5.  
  6.   With Me
  7.     .W = Screen.AvailableWidth
  8.     .H = Screen.AvailableHeight
  9.     .Arrangement = Arrange.Fill
  10.   With MapView1 = New MapView(Me) As "MapView1"
  11.     .Map.AddTile("GoogleMap", "https://mt0.google.com/vt/lyrs=s&hl=&x={x}&y={y}&z={z}")
  12.     .Map.Zoom = 14
  13. ' Establece el centro del mapa al principio:
  14.     .Map.Center = New MapPoint(36.5139777, -6.2727421) ' ...Gades !  Consuli romano Shell antiquissima patria est !
  15.   End With 
  16.  
  17. ' Identifica el Objeto "Hijo" de la "Mapview", que es un "Panel":
  18.    pn = MapView1.Children[0]
  19.    
  20.    mmpp = New MapPoint[]
  21.  
  22.  
  23. Public Sub MapView1_MouseUp()
  24.   
  25. ' Al hacer clic con el botón central del ratón, se dibujan en la superficie de la "Mapview" unos círculos concéntricos en el punto donde se ha hecho clic, y también se confirman los puntos previamente establecidos:
  26.     Dim pt As Point
  27.     Dim c As Short
  28.     pt = New Point(Mouse.X, Mouse.Y)
  29.     mmpp.Push(MapView1.Map.PixelToMapPointRel(pt))
  30. ' Provee los datos para hacer dibujar unos círculos concéntricos secuencialmente sobre el mapa mostrada por el Objeto "Mapview":
  31.     For c = 28 DownTo 1 Step 3
  32.       ct = c
  33.       MapView1.Refresh
  34.       Wait 0.1
  35.     Next 
  36.     Me.Text = Format(MapView1.Map.PixelToMapPointRel(pt).Lat, "0.000000") & "   " &
  37.               Format(MapView1.Map.PixelToMapPointRel(pt).Lon, "0.000000")
  38.   Endif 
  39.   
  40. ' Al hacer clic con el botón central del ratón, los puntos previamente dibujados son cacelados por la superficie de la "Mapview":
  41.   If Mouse.Middle Then 
  42.     mmpp.clear
  43.     MapView1.Refresh
  44.   Endif 
  45.  
  46.  
  47. Public Sub MapView1_Draw()
  48.   
  49.   If mmpp.Count == 0 Then Return 
  50.   
  51.   With Paint
  52.     .Begin(pn.Children[0])
  53.     .Brush = .Color(Color.Red)
  54.     For n = 0 To mmpp.Max - 1
  55.       .Arc(MapView1.Map.MapPointToPixelRel(mmpp[n]).X, MapView1.Map.MapPointToPixelRel(mmpp[n]).Y, 2, Rad(0), Rad(360), False)
  56.       .Fill
  57.     Next 
  58.     .Arc(MapView1.Map.MapPointToPixelRel(mmpp[mmpp.Max]).X, MapView1.Map.MapPointToPixelRel(mmpp[mmpp.Max]).Y, 2 * ct, Rad(0), Rad(360), False)
  59.     If ct > 1 Then 
  60.       .Stroke
  61.     Else 
  62.       .Fill
  63.     Endif 
  64.     .End
  65.   



"Los horizontes perdidos nunca regresan. " (F. Battiato, La stagione dell'amore, 1983)

"Las ondas nunca regresan. " (Genesis: Ripples - A trick of the tail, 1976)
[-] Los siguientes 1 usuarios dice gracias a vuott por este post:
  • Grandamakulo
    ¡Gracias!
#2

Según tu explicación me encanta, es algo que me parece que tiene muchas utilidades practicas. Gracias

Y por cierto, Feliz Año Nuevo, amigo Vuott, espero que todo te vaya bien en lo personal. Saludos
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)