Ver Mensaje Individual
  #5  
Antiguo 04-06-2019
acprincipi acprincipi is offline
Registrado
 
Registrado: jun 2019
Posts: 4
Reputación: 0
acprincipi Va por buen camino
Muchas gracias WHILENOTEOF quedo solucionado.
Siguiendo con el tema de slippy map:

Quería consultar si es necesario liberar la memoria asignada cada vez que pintamos un bmp y al desplazarnos con el scroll éste queda fuera del área de visión:

Código Delphi [-]
procedure TfrmOSMSlippyMap.dgMAPDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  bmp: TBitmap;
begin
  bmp := TBitmap.Create();

  Try
    //Cargo del directorio de bmps la imagen correspondiente a la celda que se esta dibujando actualmente.
    //Los directorios que almacenan las imágenes que forman cada mapa (según el nivel de zoom) cumplen con las especificaciones de OpenStreetMap (Slippy MAP - wiki.openstreetmap.org/wiki/Slippy_map_tilenames)
    bmp.LoadFromFile(ExtractFilePath(Application.ExeName)+'Datos\'+inttostr(cbZoomLevel.ItemIndex)+'\'+i  nttostr(ACol)+'\'+inttostr(ARow)+'.bmp');

    dgMAP.Canvas.Draw(Rect.Left ,Rect.Top , bmp);
  finally
    bmp.Free;//<-- ¿Esto libera la memoria asignada al bmp cada vez que el mismo queda fuera de la porción de la grilla que estamos visualizando?
  end;
end;

Considerando que para un mapa de nivel de zoom 9 tendremos una grilla constituida de (512x512) celdas [ (2^9)x(2^9) ], es decir un total de 262144 bmps.

¿Cual sería la mejor manera de administrar los bmp que se cargaron en una celda que ya no esta visible por habernos desplazado a otro lugar de la grilla o mapa?
Responder Con Cita