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
[-]
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.