hola de nuevo, te dejo el mismo codigo que puse adaptado a Timage : eso si, no estoy seguro que sea del todo correcto, tendrias que probar el saveto y el loadfrom para saber si realmente funciona, pues no se bien bien que relacion hay entre las clases timage, la tpicture y la tbitmap correspondiente.
Código Delphi
[-]
procedure TForm1.Guarda;
var
i : integer;
begin
label1.Caption := inttostr(index);
if index = 200 - 1 then for i := 1 to 200 - 2 do
bitblt(deshacer[i-1].Canvas.Handle,0,0,deshacer[i-1].Width,deshacer[i-1].Height,deshacer[i].Canvas.Handle,0,0,SRCCOPY);
bitblt(deshacer[index].Canvas.Handle,0,0,Width,Height,Image1.Picture.Bitmap.Canvas.Handle,0,0,SRCCOPY);
if index < 200 - 1 then Inc(index);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
doublebuffered := true;
Color := $220000;
Label1.Font.Color := clWhite;
Label1.Caption := '0';
for i := 0 to 200 - 1 do
begin
deshacer[i] := TBitmap.Create;
deshacer[i].Width := ClientWidth;
deshacer[i].Height := ClientHeight;
end;
index := 0;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i : integer;
begin
for i := 200-1 downto 0 do
deshacer[i].Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if index = 0 then exit;
dec(index);
bitblt(Image1.Canvas.Handle,0,0,ClientWidth,ClientHeight,deshacer[index].Canvas.Handle,0,0,SRCCOPY);
Refresh;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
const
op : integer = 10;
xo : integer = 0;
yo : integer = 0;
begin
Image1.Canvas.Pen.Color := random($FFFFFF);
Image1.Canvas.MoveTo(xo,yo);
Image1.Canvas.LineTo(x,y);
op := op + 1;
xo := X;
yo := Y;
if op > 10 then begin Guarda; op := 0; end;
end;