Видно разобраться в твоём примере сил не хватило

, или своё лучше.
Хотя и в твоём примере имеется недостаток:
Код:
Buff.Width:=Image1.Width;
Buff.Height:=Image1.Height;
cx:= Buff.Width div 2;// Центр экрана
cy:= Buff.Height div 2;// Центр экрана
зачем это держать в процедуре Draw?
Хотя, если форма с изменяемым размером...