Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
16.04.2013
Размер:
1.46 Mб
Скачать

Пояснения к подпрограмме

В разделе операторов процедуры FormClick в операторе присоединения с помощью методов канвы вычерчивается рисунок.

Методом FILLRECT рисуются небо, трава и кузов машины в виде закрашенных прямоугольников. Аргумент этого метода задается функциейRECT, преобразующей координаты углов прямоугольника к типуTRect.

Методом ELLIPSEрисуются солнце, облако и колеса автомобиля, методом POLYGON - шасси, кабина и окна автомобиля.

Чтобы проверить, как выполняется подпрограмма, нужно запустить систему Delphi,выбрать командуFile  New Application,в инспекторе объектов перейти на закладкуEvents, на этой закладке дважды щелкнуть мышью на событии OnClick и набрать в текстовом редакторе подпрограмму, воспользовавшись автоматически сформированной заготовкой процедуры TForm1.FormClick.

После запуска программы на выполнение кнопкой Run или клавишейF9 изображение выводится на канву при щелчке по ней мышью.

Пример 2.Осуществить движение изображения автомобиля, сформированного в примере 1.

Приложение использует процедуру FormClick, рассмотренную в примере 1, для вычерчивания исходного положения автомобиля.Движение осуществляется подпрограммой, текст которой включен в процедуру обработки события OnClick, происходящего при щелчке мышью по кнопке Button1,размещенной в форме Form1. Автоматически формируемое имя этой процедуры -TForm1.Button1Click (см. листинг 2).

{-------------------------------------------------------------------------------------------------------------------}

{ Листинг 2. Подпрограмма, осуществляющая движение автомобиля }

{-------------------------------------------------------------------------------------------------------------------}

procedure TForm1.Button1Click(Sender: TObject);

const

CarLength = 240; {Длина изображения автомобиля}

CarHeight = 96; {Высота изображения автомобиля}

XL : Integer = 385; {Координаты}

YL = 305; {прямоугольника с }

XR : Integer = 625; {изображением}

YR = 400; {автомобиля}

var {Копия изображения автомобиля}

CarImage : array [1..CarLength,1..CarHeight] of TColor;

{--------------------------------------}

procedure SaveCar; {Сохранить копию изображения автомобиля}

var {--------------------------------------}

x, y : Integer; {Координаты пикселей}

i, j : Integer; {Индексы элементов массива}

begin {SaveCar}

x := XL;

for i:=1 to CarLength do

begin

y := YL;

for j:=1 to CarHeight do

begin

CarImage[i,j] := Form1.Canvas.Pixels[x,y];

y := y + 1;

end;

x := x + 1;

end;

end; {SaveCar}

{------------------------------}

procedure EraseCar; {Стереть изображение автомобиля}

begin {----------} {EraseCar}

with Form1.Canvas do

begin

Brush.Color := clBlue; {Цвет неба, на фоне которого едет авто}

FillRect(Rect(XL,YL,XR,YR));

end;

end; {EraseCar}

{------------------------------------------}

procedure DisplayCar; {Воспроизвести копию изображения автомобиля}

var {------------------------------------------}

x, y : Integer; {Координаты пикселей}

i, j : Integer; {Индексы элементов массива}

begin {DisplayCar}

x := XL;

for i:=1 to CarLength do

begin

y := YL;

for j:=1 to CarHeight do

begin

Form1.Canvas.Pixels[x,y] := CarImage[i,j];

y := y + 1;

end;

x := x + 1;

end;

end; {DisplayCar}

begin {Button1Click}

FormClick(Form1); {Нарисовать автомобиль}

SaveCar;

repeat

EraseCar;

XL := XL - 1; {Движение влево}

XR := XR - 1;

DisplayCar;

until XL<0;

end; {Button1Click}

Соседние файлы в папке ВМИП