Показать сообщение отдельно
  #13  
Старый 02.05.2011, 01:44
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

То есть флаг должен двигаться по форме. То, что вы описываете - первый случай.
На самом деле второй на мой взгляд проще в данном случае. Image и так является "кусочком" изображения на форме. Его не зачем растягивать на всё, лучше сделать по размерам флага.

Тогда надо двигать TImage.
Код:
image1.left:=image1.left+2;
image1.top:=image1.top+2;

Это по диагонали. По периметру наверно как-то так (за работоспособность не ручаюсь, пол второго ночи на дворе)
Код:
var vectX:integer=1;
     vectY:integer=0;
...
procedure TForm1.Timer1OnTimer(Sender:TObject)
begin
image1.left:=image1.left+2*vectX;
image1.top:=image1.top+2*vectY;

if image1.left + image1.width > ClientWidth then
begin
  image1.left := ClientWidth - image1.width;
  vectX := 0;
  vectY := 1;
end;
if image1.top + image1.height > ClientHeight then
begin
  image1.top := Clientheight - image1.height;
  vectX := -1;
  vectY := 0;
end;
if image1.left < 0 then
begin
  image1.left := 0;
  vectX := 0;
  vectY := -1;
end;
if image1.top < 0 then
begin
  image1.top := 0;
  vectX := 1;
  vectY := 0;
end;
end;

2*vectX: тут 2 - это шаг в пикселях. если надо быстрее - можно его увеличить.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием