Bug-fix -es animáció

Béla animációt készít, image1-komponens felett elhuzza image2-komponenst, és a kép úgy bugzik, hogy mire elkészül, mehet a szemészetre.
Bugzásmentes animáció (bug-fix!) készítése a Delphiben külön komponenst nem igényel, mert kevesen tudják, hogy a CANVAS műveletek bug-fix! -esek! Tölts az image1-be egy nagy képet,
Image2-be kicsi képet,
image3-at hagyd üresen.
Ha az Image2-nek a transparent tulajdonságát true-ra állítod, akkor lesz igazán szép a megoldás!
Ha mégis olyan animációt akarsz készíteni, amin az image1-image2 komponenseket huzigálod a tengelyüknél fogva, akkor a Form1.DoubleBuffered:=True -ra állítod, és így az egész form bugfixes lesz.

private
{ Private declarations }
x,y,xx,yy:integer;
kicsi,nagy,tarolo:Trect;
. . . .
procedure TForm1.FormCreate(Sender: TObject);
begin
//kezdő koordináták megadása
x:=50;
y:=0;
//sebesség
xx:=1;
yy:=1;
//egyébb beállítások
timer1.Interval:=30;
image3.AutoSize:=true;
image2.AutoSize:=true;
image1.AutoSize:=true;
image3.width:=image2.Width;
image3.Height:=image2.Height;
image2.Visible:=false;
image3.Visible:=false;
//a nagy képből elmentjük a kicsi kiindulási helyét
kicsi.Left:=x;
kicsi.Right:=image2.Width+x;
kicsi.Top:=y;
kicsi.Bottom:=image2.Height+y;
tarolo.Left:=0;
tarolo.Right:=image2.Width;
tarolo.Top:=0;
tarolo.Bottom:=image2.Height;
image3.Canvas.CopyRect(tarolo,image1.canvas,kicsi);
//kicsi kép mérete
kicsi.Left:=0;
kicsi.Right:=image2.Width;
kicsi.Top:=0;
kicsi.Bottom:=image2.Height;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
//nagy képbe bemásolom a régi kép részletét
nagy.Left:=x;
nagy.Right:=x+image2.Width;
nagy.Top:=y;
nagy.Bottom:=y+image2.Height;
image1.Canvas.CopyRect(nagy,image3.canvas,kicsi);
//pattogás
x:=x+xx;
y:=y+yy;
if (x+image2.width)>image1.Width then xx:=-xx;
if x<0 then xx:=-xx;
if (y+image2.Height)>image1.Height then yy:=-yy;
if y<0 then yy:=-yy;
//bemásolandó kép helyét kimentem
nagy.Left:=x;
nagy.Right:=x+image2.Width;
nagy.Top:=y;
nagy.Bottom:=y+image2.Height;
image3.Canvas.CopyRect(kicsi,image1.canvas,nagy);
//bemásolom a kis-képet
image1.Canvas.Draw(x,y,image2.Picture.Graphic);
end;