Выбрать главу

Если вместо строчки r.Owner:=c2; написать r.Owner:=nil; , то круг r потеряет владельца и снова будет позиционироваться относительно левого верхнего угла экрана:

Примеры

Графика и анимация

Анимация без мерцания

Данная программа иллюстрирует применение процедур LockDrawing и Redraw для реализации анимации без мерцания:

uses GraphABC;

begin

LockDrawing;

for var i:=1 to 500 do

begin

Window.Clear;

Brush.Color := clGreen;

Ellipse(i,100,i+100,200);

Redraw;

Sleep(1);

end;

end.

Основная идея состоит в следующем: отключим рисование на экране, вызвав LockDrawing (рисование будет осуществляться только во внеэкранном буфере), после чего будем всякий раз формировать новый кадр изображения и выводить его целиком на экран, вызывая Redraw. При вызове Redraw перерисовывается все графическое окно, поэтому скорость анимации ограничена скоростью вывода внеэкранного буфера на экран.

Простейшие события

Рисование мышью в графическом окне

Данная программа осуществляет рисование мышью в графическом окне:

uses GraphABC;

procedure MouseDown(x,y,mb: integer);

begin

MoveTo(x,y);

end;

procedure MouseMove(x,y,mb: integer);

begin

if mb=1 then LineTo(x,y);

end;

begin

// Привязка обработчиков к событиям

OnMouseDown := MouseDown;

OnMouseMove := MouseMove

end.

Перемещение окна с помощью клавиатуры

Данная программа осуществляет перемещение графического окна с помощью клавиатуры:

uses GraphABC;

procedure KeyDown(Key: integer);

begin

case Key of

VK_Left: Window.Left := Window.Left - 2;

VK_Right: Window.Left := Window.Left + 2;

VK_Up: Window.Top := Window.Top - 2;

VK_Down: Window.Top := Window.Top + 2;

end;

end;

begin

// Привязка обработчиков к событиям

OnKeyDown := KeyDown;

end.

Пример использования таймера

Данная программа выводит 1 каждые 100 миллисекунд в течение 3 секунд:

uses Timers;

procedure TimerProc;

begin

write(1);

end;

begin

var t := new Timer(100,TimerProc);

t.Start;

Sleep(3000);

end.

Вызов Sleep здесь обязателен, иначе программа после создания таймера сразу закончится, и обработчик таймера ни разу не сработает.