Ver Mensaje Individual
  #5  
Antiguo 22-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Cita:
Empezado por Deiv
Código Delphi [-]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin 
  Bitmap.Free; 
  tempBmp.Free; 
end;
No veo ningún problema en ese código. Aunque yo no cargaría las imágenes cada vez que quieras dibujar una de las imágenes, lo cargaría todo al principio. Me explico:
Código Delphi [-]
// Aqui dibujamos las imagenes en 2 filas y 9 columnas
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j: integer;
begin
  for i:= 0 to 9 do
    for j:= 0 to 1 do
      Imagelist1.Draw(PaintBox1.Canvas,i*50,j*50,i+(j*10));
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Bitmap, Recorte: TBitmap;
begin
  Bitmap:= TBitmap.Create;
  Recorte:= TBitmap.Create;
  try
    Bitmap.LoadFromFile('d:\dibujo.bmp');
    ImageList1.Clear;
    ImageList1.Width:= Bitmap.Width div 10;
    ImageList1.Height:= Bitmap.Height div 2;
    Recorte.Width:= Bitmap.Width;
    Recorte.Height:= Bitmap.Height div 2;
    Recorte.Canvas.CopyRect(Recorte.Canvas.ClipRect,
      Bitmap.Canvas,Rect(0,0,Bitmap.Width,Bitmap.Height div 2));
    Imagelist1.AddMasked(Recorte, Recorte.Canvas.Pixels[0,0]);
    Recorte.Canvas.CopyRect(Recorte.Canvas.ClipRect,
      Bitmap.Canvas,Rect(0,Bitmap.Height div 2,Bitmap.Width,Bitmap.Height));
    Imagelist1.AddMasked(Recorte, Recorte.Canvas.Pixels[0,0]);
  finally
    Bitmap.Free;
    Recorte.Free;
  end;
end;

Si te fijas al cargar las imágenes en el TImagelist, primero añadimos una fila y la otra a continuación. A la hora de dibujar solo tenemos que utilizar como índice el numero de columna + el numero de fila * 10, por ejemplo el elemento [5,1] tendría como índice 5+(1*10)=15.
Responder Con Cita