Imagenes como mapas...

Imagenes como mapas...

Postby Saloh » Sun Jan 04, 2009 2:05 am

Hola, buena noche. Soy nuevo en el foro. Tengo una pregunta que hacer, ojala y puedan ayudarme. Es posible utilizar imagenes de mapas dentro de un programa para que al apuntar a una zona pueda relacionarlo con algunos datos de una base de datos? Gracias
Saloh
 
Posts: 7
Joined: Mon Apr 16, 2007 7:43 pm
Location: México, D.F.

Re: Imagenes como mapas...

Postby Antonio Linares » Sun Jan 04, 2009 9:25 am

Bienvenido al foro! :-)

Te refieres a mapas de calles (tipo callejero) ó de áreas (tipo mapa mundi) ?

Si es al primero, busca por google maps en estos foros.

Para el segundo, lo mas sencillo es usar dos imágenes, una a todo detalle, y otra con colores iguales para marcar las areas. Se detecta en donde se ha pulsado en el primero, y se obtiene el color en el segundo (GetPixel()) y por el color se busca en una DBF, array, etc.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42081
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Imagenes como mapas...

Postby Saloh » Sun Jan 04, 2009 7:25 pm

Muchas gracias Antonio, me refiero a algo parecido a lo que hacen en este sitio: http://www.guianet.info/index.php?f=d&IdD=8
Yo no tengo mucha experiencia, sabes donde puedo encontrar un ejemplo de esto para guiarme de ahi.
Saludos!!!
Saloh
 
Posts: 7
Joined: Mon Apr 16, 2007 7:43 pm
Location: México, D.F.

Re: Imagenes como mapas...

Postby Antonio Linares » Sun Jan 04, 2009 8:16 pm

Ese tipo de mapa lo puedes hacer con dos imagenes (la que se ve, y otra con colores por areas, que no se ve) y luego usando polipolygon() para pintar los poligonos, cuyas coordanadas tienes que tener almacenadas en una DBF, etc.

A ver si podemos prepararte un ejemplo pronto,
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42081
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Imagenes como mapas...

Postby Saloh » Sun Jan 04, 2009 8:59 pm

Gracias!!!, ojala y pueda ver un ejemplo básico y de ahi yo le sigo. Saludos!!!!
Saloh
 
Posts: 7
Joined: Mon Apr 16, 2007 7:43 pm
Location: México, D.F.

Re: Imagenes como mapas...

Postby dobfivewin » Mon Jan 05, 2009 7:29 am

Me interesa este tema

me pasan el ejemplo :?:

gracias

david
argentina
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Re: Imagenes como mapas...

Postby Saloh » Wed Jan 14, 2009 4:11 pm

Si, claro David, si Antonio me hace el favor de orientarme con gusto. Saludos!!!
Saloh
 
Posts: 7
Joined: Mon Apr 16, 2007 7:43 pm
Location: México, D.F.

Re: Imagenes como mapas...

Postby Antonio Linares » Wed Jan 14, 2009 7:08 pm

Vamos a hacer el ejemplo con estos dos mapas que nos ha proporcionado Felix:

Como veis, en el mapa 'oculto' usamos colores para diferenciar las distintas areas.

Visible:
Image

Oculto:
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42081
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Imagenes como mapas...

Postby Antonio Linares » Wed Jan 14, 2009 8:22 pm

Aqui teneis el codigo fuente de TestMap.prg y TestMap.rc:

TestMap.prg
Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, oHand, oBmp1

   DEFINE CURSOR oHand HAND

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE BITMAP oBmp1 ID 110 OF oDlg FILENAME "visible.bmp"

   oBmp1:oCursor = oHand
   
   oBmp1:bLClicked = { | nRow, nCol | MsgInfo( GetArea( GetColor( nRow, nCol, oBmp1 ) ) ) }

   ACTIVATE DIALOG oDlg CENTERED

return nil

function GetColor( nRow, nCol, oBmp )

   local hDC  := CreateCompatibleDC( oBmp:GetDC() )
   local hBmp := ReadBitmap( 0, "oculto.bmp" )
   local hOldBmp   := SelectObject( hDC, hBmp )
   local nRGBColor := GetPixel( hDC, nCol, nRow )   

   SelectObject( hDC, hOldBmp )
   DeleteObject( hBmp )
   DeleteDC( hDC )
   oBmp:ReleaseDC()
   
return nRGBColor

function GetArea( nRGBColor )

   do case
      case nRGBColor == 5026082
           return "pasillo exterior"
           
      case nRGBColor == 65535 .or. nRGBColor == 62207
           return "edificio social" 
           
      case nRGBColor == 2366701
           return "zona D"     
           
      case nRGBColor == 1959605
           return "zona C"     

      case nRGBColor == 15245824
           return "zona A"     

      case nRGBColor == 12632256
           return "zona F"     

      case nRGBColor == 13387839
           return "zona G"     
           
      otherwise
           return Str( nRGBColor ) + ", no definido aun en la funcion GetArea()"       
     
   endcase
   
return nil     


TestMap.rc
Code: Select all  Expand view
test DIALOG 17, 36, 186, 147
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "TestMap"
FONT 8, "MS Sans Serif"
{
  CONTROL "", 110, "TBitmap", WS_CHILD | WS_VISIBLE, 5, 5, 175, 120
}


Podeis descargar estos ficheros, los bitmaps y el EXE desde:
http://www.fivetechsoft.com/files/utilities/testmap.zip
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42081
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Imagenes como mapas...

Postby Saloh » Wed Jan 14, 2009 8:50 pm

Muchas gracias, bajare el programa y hare pruebas. Pero tengo la duda. Las imagenes que utilizare son amorfas, es decir, no son geometricas como cualquier mapa.
Saloh
 
Posts: 7
Joined: Mon Apr 16, 2007 7:43 pm
Location: México, D.F.

Re: Imagenes como mapas...

Postby Antonio Linares » Wed Jan 14, 2009 10:05 pm

No importa como sean las imagenes. Lo unico que hace falta es que tengas una imagen coloreada por zonas, para asi reconocer las zonas.

Es decir, podrias tener una foto con millones de colores y esa misma foto con colores unicos para marcar cada zona.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42081
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Imagenes como mapas...

Postby mmercado » Thu Jan 15, 2009 8:28 am

Antonio Linares wrote:Aqui teneis el codigo fuente de TestMap.prg y TestMap.rc:
Hola Antonio:

Una bella muestra del "Genio" que todos los perezosos llevamos dentro. :mrgreen:

Muchas gracias.

Manuel Mercado.
manuelmercado at prodigy dot net dot mx
User avatar
mmercado
 
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Re: Imagenes como mapas...

Postby Biel EA6DD » Thu Jan 15, 2009 11:26 am

Muy buen ejemplo.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: Imagenes como mapas...

Postby Rossine » Thu Jan 15, 2009 1:13 pm

Antonio,

Interessante este exemplo :D

Mudei ele um pouco para mostar o texto e cor da area apontada:

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, oHand, oBmp1, osay

   DEFINE CURSOR oHand HAND

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE SAY osay ID 3 of oDlg

  REDEFINE BITMAP oBmp1 ID 110 OF oDlg FILENAME "visible.bmp"

   oBmp1:oCursor = oHand
   
   oBmp1:bLClicked = { | nRow, nCol | MsgInfo( GetArea( GetColor( nRow, nCol, oBmp1 ) ) ) }
   oBmp1:bMMoved   = { | nRow, nCol | ( osay:settext( GetArea( GetColor( nRow, nCol, oBmp1 ) ) ), ;
                                        osay:setcolor( rgb(0,0,0), GetColor( nRow, nCol, oBmp1 ) ) ) }

   ACTIVATE DIALOG oDlg CENTERED

return nil

function GetColor( nRow, nCol, oBmp )

   local hDC  := CreateCompatibleDC( oBmp:GetDC() )
  local hBmp := ReadBitmap( 0, "oculto.bmp" )
   local hOldBmp   := SelectObject( hDC, hBmp )
   local nRGBColor := GetPixel( hDC, nCol, nRow )   

   SelectObject( hDC, hOldBmp )
   DeleteObject( hBmp )
   DeleteDC( hDC )
   oBmp:ReleaseDC()
   
return nRGBColor

function GetArea( nRGBColor )

   do case
      case nRGBColor == 5026082
           return "pasillo exterior"
           
      case nRGBColor == 65535 .or. nRGBColor == 62207
           return "edificio social" 
           
      case nRGBColor == 2366701
           return "zona D"     
           
      case nRGBColor == 1959605
           return "zona C"     

      case nRGBColor == 15245824
           return "zona A"     

      case nRGBColor == 12632256
           return "zona F"     

      case nRGBColor == 13387839
           return "zona G"     
           
      otherwise
           return Str( nRGBColor ) + ", no definido aun en la funcion GetArea()"       
     
   endcase
   
return nil     


Code: Select all  Expand view
// 186, 147
test DIALOG 17, 36, 186, 147
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "TestMap"
FONT 8, "MS Sans Serif"
{
  LTEXT "      ", 3, 3, 7, 170, 10
  CONTROL "", 110, "TBitmap", WS_CHILD | WS_VISIBLE, 5, 20, 175, 120
  CONTROL "", 120, "TBitmap", WS_CHILD | WS_VISIBLE, 5, 150, 175, 120
}
Obrigado, Regards, Saludos

Rossine.

Harbour and Harbour++
Rossine
 
Posts: 344
Joined: Tue Oct 11, 2005 11:33 am

Re: Imagenes como mapas...

Postby Raymundo Islas M. » Thu Jan 15, 2009 11:15 pm

Antonio,

Simplemente espectacular !!!!

Sole tengo una pregunta al respecto : Se puede manejar de igual forma usando JPGs ?

Ya que la idea que traigo en mente, utilizaria imagenes un poco mas grandes y ya sabes como pesan los BMPs.
Y ya que se maneja por pares, aun mas.


Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 45 guests