Trabajo con Delphi7, en un pequeño server visualizador de Mapas, basado en la técnica Slippy Map de OSM. He conseguido cargar en un TDrawGrid los bmps que conforman el mapa. Cada celda del TDrawGrid aloja un bmp (de 256x256 pixel) que forma parte del mapa que estamos mostrando. Dependiendo del nivel de zoom seleccionado tendremos una grilla (o matriz) de menor o mayor tamaño.
PROBLEMA: el método drawCell va levantando la imagen (bmp) correspondiente a la celda que esta dibujando y la coloca en esa posición. Muestra el mapa correctamente hasta que movemos cualquiera de los scrollbar (Horizontal o Vertical) para navegar el mapa. En ese momento no se refresca o repinta la imagen que corresponde a cada celda. Muestra las celdas vacías. Por ejemplo si me muevo a la derecha lo que estaba pintado se va moviendo bien pero las nuevas celdas que van apareciendo no muestran nada.
Les dejo el codigo del metodo OnDrawCell:
Código Delphi
[-]
procedure TfrmOSMSlippyMap.dgMAPDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
bmp: TBitmap;
zoom_Level_dir, x, y, TileX_Pos, TileY_Pos: Integer;
begin
bmp := TBitmap.Create();
Try
TileX_Pos := ACol * 256; TileY_Pos := ARow * 256; x := ACol;
y := ARow;
bmp.LoadFromFile(ExtractFilePath(Application.ExeName)+'Datos\'+inttostr(cbZoomLevel.ItemIndex)+'\'+i nttostr(x)+'\'+inttostr(y)+'.bmp');
dgMAP.Canvas.Draw(TileX_Pos ,TileY_Pos , bmp);
finally
bmp.Free;
end;
end;
No pude subir el proyectito en delphi7 (de 235 kb) porque superaba la cuota otorgada, pero si alguien esta interesado en el tema me avisa y se lo paso. Son muy pocas lineas de código y viene con los bmp incluidos.
Si hay algún componente que puedan sugerirme para D6 o D7 se los agradecería mucho.
Saludos.
Saludos y gracias