PascalABC.NET

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

Данная программа иллюстрирует применение процедур 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 перерисовывается все графическое окно, поэтому скорость анимации ограничена скоростью вывода внеэкранного буфера на экран.